为mingw编译linux库

时间:2010-12-22 02:30:56

标签: c++ mingw porting cross-compiling

我一直在使用C ++的套接字库。其他一些信息:32位Linux,Codelite和GCC工具集。我希望能够使用Codelite的Windows版本编译我的Windows程序。我一直使用的套接字库没有库的mingw32版本,但它是开源的。那么如何构建一个mingw32版本的套接字库,以便我可以使用提供的源代码构建一个windows版本?

3 个答案:

答案 0 :(得分:1)

大多数开源linux库都是使用make build系统构建的(尽管还有其他像jam等,以及用于构建的自定义编写脚本)。 MinGW附带make实用程序,它是 mingw32-make.exe 。有可能(如果你很幸运的话)只需在Windows上重建你的库即可。

更常见的情况是,您需要先构建项目,然后再进行构建。 Windows shell不支持配置所需的脚本要求,但MinGW项目的另一部分确实称为 MSYS 。如果您安装了msys以及所需的所有必需工具,那么在运行make之前,您将能够./ /配置您的项目。

当然,只有将库编写为可移植时,上述操作才有效。 linux套接字实现(sys / socket.h)和windows实现(winsock2.h)之间存在一些细分差异。您可能被迫编辑代码块以确保它为平台正确版本化(或者还需要为Windows构建所需的任何依赖项)。

此外,有可能已经为Windows构建了库,但使用了不同的编译器,如MSVC,它生成.lib和.dll文件。 Mingw需要.a文件库,但一个聪明的功能是能够直接链接到.dll,而不需要导入库,所以你经常可以使用一个不是针对Mingw构建的现有Windows库(虽然这赢了无助于静态链接。还有一个工具 dlltool ,它可以将.lib转换为.a。

如果你详细介绍了你正在使用的特定库,我或许可以选择在Win上运行它需要做些什么。

答案 1 :(得分:0)

您将其移植到新平台。 :)

你很幸运它是开源的,因为它实际上是不可能移植的(你必须支付$$$来获取特定许可证的代码副本,或者重写整个产物)。

享受。

或者,他们可能已经有了一个端口...查看您正在使用的库的文档。

答案 2 :(得分:0)

首先,您需要确保不包含任何特定于Linux的库。