2010-12-22 120 views
1

我一直在使用C++的套接字库。其他一些信息:32位Linux,Codelite和GCC工具集。我希望能够使用Codelite的Windows版本编译我的Windows程序。我一直使用的套接字库没有库的mingw32版本,但它是开源的。那么我怎样才能让套接字库的mingw32版本生成,这样我就可以使用提供的源代码创建一个windows版本?为mingw编译linux库

回答

0

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

你很幸运,它是开源的,因为那样几乎不可能移植它(你必须支付$$$才能获得特定许可证的代码副本,或者重写整个产品)。

享受。

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

+0

我检查了图书馆的文档和他们没有任何的mingw32。那么,我该如何“移植”图书馆,我需要采取哪些步骤? – TheFuzz 2010-12-22 02:35:55

0

首先你需要确保你没有包含任何Linux特定的库。

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构建,但使用不同的编译器(如生成.lib和.dll文件的MSVC)。 Mingw需要用于库的.a文件,但一个聪明的特性是能够直接与.dll链接,而不需要导入库,所以你可以经常使用一个不是针对Mingw构建的现有Windows库(尽管这赢得了对静态链接没有帮助)。还有一个工具,dlltool,它可以将.lib转换为.a。

如果您提供关于您正在使用的特定库的详细信息,我可能会为您挑选在Win上运行它需要做的事情。