在 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 上构建 R 包:无法加载共享对象 (.dll)
在 Open Suse Leap 15.1 上对 32 位可执行文件的 iconv_open 支持