在 Win32 中构建最新的 iconv 和 libxml2 二进制文件

Posted

技术标签:

【中文标题】在 Win32 中构建最新的 iconv 和 libxml2 二进制文件【英文标题】:Building the latest iconv and libxml2 binaries in Win32 【发布时间】:2010-08-07 04:09:21 【问题描述】:

我正在尝试让 MinGW 和 MSYS 工作,以便我可以在 Windows 中构建 iconv 和 libxml2,但我发现 ./configure 和 make 给出了很多与谷歌相关的 BSD/Unix 相关错误,而且描述性不足以让我弄清楚。任何人都可以完成在 Win32 机器上构建 iconv 和 libxml2 .dll/.lib 所需的一些步骤吗?

我正在更新一些软件的库,我今天整天都在摆弄这个,但还没弄明白。我得到了最新的 libpng、zlib 和 curl,没有任何问题,但我发现这些库没有太多的支持或操作方法,就像其他库一样。任何帮助将不胜感激,提前感谢您的时间。

詹姆斯

【问题讨论】:

【参考方案1】:

我意识到我可能正在恢复死线,但是......

对我有用的是不编译共享库,而是使用 a2dll 工具派生它们,如下所示:

./configure --prefix=/mingw --disable-shared make make install

a2dll libiconv.a -o iconv.dll mv -iv iconv.dll /mingw/bin/

【讨论】:

【参考方案2】:

环境 mingw32

在这篇文章的帮助下,我能够编译 libxml2https://mail.gnome.org/archives/xml/2011-December/msg00005.html 在解压后的http://xmlsoft.org/sources/libxml2-2.9.1.tar.gz的win32目录里面 执行以下 2 个步骤

cscript configure.js threads:no static:yes compiler:mingw iconv:no prefix=where_you_want_to_install include=where_your_mingw_include_is lib=where_your_mingw_lib_is debug=yes

然后mingw32-make -f Makefile.mingw

我能够在 Windows 7 环境下使用 mingw 上的 code::blocks 编译和执行 http://xmlsoft.org/examples/reader1.c 示例。 请记住在“项目构建选项”下的“其他链接器选项”框中指定-lxml2-lws2_32 标志

【讨论】:

【参考方案3】:

libxml2 提供 javascript 配置。在win32文件夹中查找。那里还有一个单独的自述文件。构建libxml2示例:

cd win32
cscript.exe configure.js compiler=mingw prefix=D:\soft\Qt\2010.03\mingw  debug=yes static=yes
mingw32-make -f Makefile.mingw

我有 downloaded prebuilt iconv,它对我有用。

【讨论】:

Basilevs,谢谢,这确实适用于 libxml2,但至于 iconv,我想获得最新的 1.13.1 并构建它,但无法在任何地方找到它们。我尝试将 Sourceforge 上可用的那些与 MinGW (sourceforge.net/downloads/mingw/MinGW/libiconv/libiconv-1.13.1) 一起使用,但如果不做一些 hacky 的东西来更改 iconv.dll 命名约定,就无法让它们工作。 我不得不这样做并最终让它发挥作用。但是,请确保使用 mingw32-make 而不是 make。无论出于何种原因,两者对我的表现都不一样。可能有路径问题,但它现在可以正常工作,所以我会保留它。 @Jason,原因是make是MSYS环境,而mingw32-make是本地控制台。【参考方案4】:

您可以通过http://www.zlatkovic.com/libxml.en.html 获取 Igor Zlatkovic 制作的 Windows 二进制文件

【讨论】:

Aaragorn,我确实看到了那些二进制文件,但它们比我目前拥有的那些更旧,他只有 1.9.2,我希望有更新的版本。我知道它可能适用于旧版本的 .dll,但我试图避免依赖预构建的 .dll 并尝试构建我自己的。我已经接受了妥协并将使用旧版本,尽管我仍然想弄清楚如何在 win32 上构建 iconv。即使经过多次尝试和解决方法,Cygwin 和 MinGW/MSYS 对我来说也失败了。【参考方案5】:

你必须先清洁然后

./configure --host=arm-linux --disable-shared  --enable-static CC="arm-linux-gcc"  --prefix="/tmp/iconv" --with-configuredir="/tmp/iconv" 
make 
make install 

然后在 /tmp/iconv 获取 libconv.a

【讨论】:

【参考方案6】:

我最近找到了来自 Andrew Marlow(2013 年 7 月)的tutorial,简要解释了如何在 VisualStudio 下编译 libxml2。

libiconv 可以在这个complete tutorial 之后编译,也作为第一个链接中的链接给出。

编辑

libxml2 的 1.14 版本现在有了 VS2010 的解决方案。现在做这个很简单!

否则,您可以按照自述文件和 Marlow 的教程使用其他特定于 Windows 的编译器完成相同的工作。

编辑

我想在这里写下有关 libxml2 v1.14 中包含的 VS2010 解决方案的一些细节,以帮助任何有兴趣的人。做得很糟糕;例如,Release 配置根本没有正确完成,您必须这样做。如果你想使用它,我给你两个建议:

    如果路径不正确,请先删除项目 iconv。然后添加你的项目文件;由于旧文件中保留了参考,您在编译时仍会收到警告。要抑制此警告,请使用文本编辑器编辑 .vcxproj,将最后一个 ItemGroup 的 ProjectReference Include 路径更改为正确的路径,以及此节点的 Project 项目(将其替换为 iconv vcxproj 的 ProjectGuid) .

    与 Ws2_32.lib 链接任何使用静态库 libxml2.lib 的应用程序。

这些是我遇到的一些错误,希望这对任何想要在 VS 下重建 libxml2 的人有所帮助。

【讨论】:

以上是关于在 Win32 中构建最新的 iconv 和 libxml2 二进制文件的主要内容,如果未能解决你的问题,请参考以下文章

win32下编译glog

在 win32 上构建 R 包:无法加载共享对象 (.dll)

最新检查声称自 VS 2019 以来缺少构建输出

在 Open Suse Leap 15.1 上对 32 位可执行文件的 iconv_open 支持

使用 iconv 为 iOS 构建 Boost.Locale

cocos2d-x 3.0rc1 使用iconv库 解决UTF8乱码问题