如何构建gnu`libiconv` on&对于Windows?

时间:2010-04-28 21:57:10

标签: c linux visual-c++ static-libraries cross-compiling

我想在Windows上构建一个静态库(* .LIB文件)GNU libiconv,以便与Visual C ++中的其他库一起使用。我正在使用的其他库是使用“MultiThreaded 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库。所以,如果我得到一个库的解决方案。我可以为所有其他人做同样的事情。

4 个答案:

答案 0 :(得分:9)

我发现PARK Youngho的How to Build libiconv with Microsoft Visual Studio The Code Project 上完成并且干净(对于VS2010和GNU libiconv 1.14)。

答案 1 :(得分:3)

你的回答有点补充。 我遇到了同样的问题,发现MinGW + MSYS解决方案非常完美。

尽管如此,我还需要更进一步,并生成.lib文件,以便能够与生成的dll链接。

这是我发现的:

  • 使用dumpbin(Visual Studio工具)从dll生成.def文件。

  • 使用lib程序从(.def)生成.lib文件(Visual Studio工具)

这允许您指定一些链接标志(如果适用)。 这里详述的一切(我不是这个方法的作者): http://wiki.videolan.org/GenerateLibFromDll

我也意识到这个lib / dll对可以与MD和MDd库链接。

希望能帮助找到这篇文章的人,就像它帮助了我一样。

-David

答案 2 :(得分:1)

如果需要,使用Msys为环境编译MinGW。根据邮件列表,MinGW的.a文件显然与.lib文件的格式相同(只是重命名)。您可能想先检查一下minGW下载/文件系统中是否已包含iconv静态库。

编辑:它在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/

答案 3 :(得分:1)

我是OP。我正在寻找的是MSYS

只需安装MinGW& MSYS包含shell sh.exe&您可以使用make.exe配置并生成Makefile,然后您可以使用make.exe来运行它。

就这么简单。