用cygwin在windows中链接linux静态库

Posted

技术标签:

【中文标题】用cygwin在windows中链接linux静态库【英文标题】:linkning linux static libraries in windows with cygwin 【发布时间】:2010-04-14 09:35:10 【问题描述】:

我正在为 32 位 linux 机器编译一个二进制静态库 libfoo.a。我希望针对我用 cygwin 编译的 win32 项目编译它。

这可能吗?这似乎是可能的,因为存档中的所有目标文件都应该是标准的ELF 格式。

但是,我不断收到有关 nmlibfoo.a 中找到的函数的链接错误。 当我创建一个存根libfoo.a 与一些空函数与libfoo.a 中的函数名称相同时,我不再收到关于这些函数的链接错误。

这是可能的还是我错过了什么? 无论如何,我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

即使您成功链接,也无法避免构建在不同平台上的代码不兼容。例如标题(glibc 和其他)在那里是不同的。为了确保兼容性,似乎对目标文件导出的符号使用了类似于修改的附加机制。

我在尝试将针对不同处理器架构编译的目标文件链接在一起时遇到了与您类似的问题 - nm 显示所有需要的功能都存在,但链接器不相信。

【讨论】:

以上是关于用cygwin在windows中链接linux静态库的主要内容,如果未能解决你的问题,请参考以下文章

如何在运行时解析 dll 中的外部符号,而不是使用 Cygwin 进行链接时

在 Windows 中将 VS2005 静态库与 gcc 链接

Cygwin-安装和配置ssh服务

如何在windows环境用eclipse搭建linux开发环境

cygwin

在linux下,QT怎样编译出windows程序