【问题标题】:How to build gnu `libiconv` on & for windows?如何在 Windows 上构建 gnu `libiconv`?
【发布时间】: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 库。所以,如果我得到一个图书馆的解决方案。我可以为所有其他人做同样的事情。

【问题讨论】:

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


    【解决方案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 是否有您需要的版本?不过编号似乎有点奇怪。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-09-30
          • 2012-10-04
          • 1970-01-01
          • 2011-08-22
          • 2017-07-22
          • 2014-11-23
          • 2012-09-20
          相关资源
          最近更新 更多