GCC/MingW 在不同版本上编译

Posted

技术标签:

【中文标题】GCC/MingW 在不同版本上编译【英文标题】:GCC/MingW compiling on different versions 【发布时间】:2010-10-27 15:08:53 【问题描述】:

我想知道我可以使用一个编译的静态库(lib*.a 文件)吗 MingW 版本并在其他版本上使用它们?还是我必须重新编译所有库?

【问题讨论】:

【参考方案1】: 静态库(*.a 文件)只是目标文件(*.o 文件)的存档 您可以将针对不同版本的库(此处为 MinGW 库)编译的代码片段混合在一起,只要它们保持二进制代码兼容性即可。在 MinGW 的情况下,这意味着所有 3.* 版本都可以很好地协同工作。

【讨论】:

你知道吗,.a 文件和 .lib 文件(微软)有什么区别? .lib 文件也是 .o 文件的某种档案吗?【参考方案2】:

是的,你可以。如果它们没有出现任何问题,则无需重新编译它们

【讨论】:

但是我在某些操作系统上编译的库不能在其他操作系统上使用? .a 文件只是 .o 文件的存档?还是更复杂? @Seba :第一个是真的。在某些操作系统上编译的库不能在其他操作系统上使用。您需要重新编译它们。对于第二个,.a 文件是 .o 文件的存档,这些文件被编译为统计库。 谢谢 :) 链接器会链接包含所需代码的完整 .o 文件还是仅链接所需的部分? @Seba。链接器将链接完整的 .o 文件,因为它是一个静态链接库。

以上是关于GCC/MingW 在不同版本上编译的主要内容,如果未能解决你的问题,请参考以下文章

在 32 位和 64 位上编译,但校验和不同

在centos6上编译安装httpd-2.4版本

我可以在一个版本的 Windows 上编译 C 程序,然后在另一个版本的 Windows 上运行它吗?

为啥在两台略有不同的机器上编译的库的行为略有不同?

是否可以在旧 Xcode 上编译最新的 Swift 版本?

如何在 Windows 上编译 64 位版本的 ffmpeg?