如何在 Windows 上构建 gnu `libiconv`?
Posted
技术标签:
【中文标题】如何在 Windows 上构建 gnu `libiconv`?【英文标题】:How to build gnu `libiconv` on & for windows? 【发布时间】:2010-04-28 21:57:10 【问题描述】:我想在 Windows 上构建一个静态库(*.LIB 文件)GNU libiconv,以便与 Visual C++ 中的其他库一起使用。我正在使用的其他库是使用“多线程 DLL”(/MD)运行时选项构建的。因此,我需要使用相同的选项构建 libiconv。
问题是 libiconv
使用 GNU 构建系统,我想使用 /MD 选项进行编译。可以在这里查看 libiconv 的源码结构:http://cvs.savannah.gnu.org/viewvc/libiconv/?root=libiconv
先生。 Zlatkovic为libxml2维护GNU libiconv
的windows端口
你可以在这里看到它们:
ftp://xmlsoft.org/libxml2/win32/iconv-1.9.2.win32.zip
我不能使用他的端口。我需要从最新版本的 libiconv-1.13 构建。我想知道这家伙是怎么移植的?有人可以告诉我如何构建 *.lib 并使用 MSVC 编译它吗?
编辑:
实际上,我需要构建更多具有相同设置的 gnu 库。所以,如果我得到一个图书馆的解决方案。我可以为所有其他人做同样的事情。
【问题讨论】:
【参考方案1】:我在 The Code Project 发现 PARK Youngho 的 How to Build libiconv with Microsoft Visual Studio 完整且干净(适用于 VS2010 和 GNU libiconv 1.14)。
【讨论】:
【参考方案2】:对您的回答稍加补充。 我遇到了同样的问题,发现 MinGW + MSYS 解决方案非常完美。
不过,我还需要进一步生成 .lib 文件,以便能够与生成的 dll 链接。
这是我发现的:
使用 dumpbin(Visual Studio 工具)从 dll 生成 .def 文件。
使用 lib 程序从 .def 生成 .lib 文件(也是 Visual Studio 工具)
这允许您在适当的情况下指定一些链接标志。 此处详细说明的所有内容(我不是此方法的作者): http://wiki.videolan.org/GenerateLibFromDll
我还意识到这对 lib/dll 可以与 MD 和 MDd 库链接。
希望能帮助找到这篇文章的人,就像它帮助了我一样。
-大卫
【讨论】:
【参考方案3】:我是 OP。 MSYS 正是我要找的东西。
只需安装 MinGW & MSYS,其中包含 shell sh.exe
& make.exe
,您可以使用它们配置和生成Makefile
,之后您可以使用 make.exe 运行它。
就这么简单。
【讨论】:
【参考方案4】:使用MinGW 编译它们,如果需要,使用 Msys 作为环境。根据邮件列表,MinGW 的 .a 文件显然与 .lib 文件格式相同(只需重命名)。您可能需要先检查 iconv 静态库是否已包含在 MinGW 下载/文件系统中。
编辑:它在 msys (C:\msys\1.0\lib) 中,以及:
libiconv.a libiconv.dll.a libiconv.la另外
libiconv-2.dll(在 C:\msys\1.0\local\bin 中)编辑:你需要的 libiconv 在这里吗?这些版本似乎有 MSVC makefile :) http://www.opensource.apple.com/source/libiconv/
【讨论】:
但是我将如何运行./configure
这是一个 shell 脚本?此外,我将如何为 MinGW 的 g++ 编译器提供“多线程 DLL”运行时选项。
您可能不会遇到开发人员试图避免的 MinGW 工具链同样的问题。基本上,MSVC 编译器/链接器的多线程选项允许 DLL 使用多个堆而不是单个堆,快速浏览一下,并防止出现问题。
好吧,我不能在整个项目中使用 GNU 工具链。因为 1. 我对 MinGW 不是很熟悉 2. 我正在使用 MFC 和 3. 所有其他库都可以使用 MSVC 并且我在 MSVC 中编译它们。我只需要一种方法来为 Windows 编译 gnu 库。重要的问题是./configure
将如何执行创建生成文件?我也不能为 libiconv 使用预编译的 lib 文件,因为如果我自己编译它。我将使用相同的方法来编译其他所需的 gnu 库。
感谢您提供替代方法。但我需要知道如何做到这一点,因为我需要使用 /MD 在 MSVC 上构建其他 GNU 库
您查看opensource.apple.com/source/libiconv 是否有您需要的版本?不过编号似乎有点奇怪。以上是关于如何在 Windows 上构建 gnu `libiconv`?的主要内容,如果未能解决你的问题,请参考以下文章
如何在Apple OS X 10.5 Leopard上构建和安装GNU wget
让 GNU Make 和 NMake 默认使用不同的 makefile
如何在 pythonanywhere 上安装 GNU MPFR 库
g ++中的fstream链接错误与-std = gnu ++ 0x