混合来自不同C++编译器的库

6 c++ linux compiler-construction compatibility

我正在研究一个跨越几个不同组织的项目的redhat 5.2.每个组织都提供使用各种版本的g ++编译的库.目前,这些版本包括4.1.1,4.1.2和4.3.1.我试图使用4.1.2将所有库链接到一个可执行文件.如果有的话,我可以期待这样做的问题是什么?顺便说一下,有没有办法告诉每个编译器版本构建到哪个ABI?

ASk*_*ASk 6

ABI策略文档详细说明了不同ABI版本之间的兼容性.根据它,libstdc++.so库应该是兼容的,并且gcc最后一次打破二进制兼容性是在3.4.你应该没事.


Jon*_*ler 5

GCC(GNU编译器集合)定义版本号和兼容性.

4.1.1和4.1.2之间的G ++库应该是兼容的; 与最新的链接.

4.1.x和4.2.x之间的G ++库不兼容; 你需要重新编译一些东西.

3.xy和4.pq之间的G ++库不兼容; 你需要重新编译一些东西.

在您的方案中,使用4.3.1构建的代码与其余代码不兼容.

您必须重建当前使用4.3.x编译的代码,因此它使用4.1.x,或者您需要重新编译当前使用4.1.x编译的代码,因此它使用4.3.x代替.


0x6*_*015 1

也许静态链接可执行文件更容易......生成一个大的二进制文件,但可以在所有平台上运行。