C ++使用较新的编译器构建应用程序,而无需重建库

时间:2018-08-07 07:14:37

标签: c++ gcc linker

我有一个使用多个库的C ++程序。
我使用gcc版本4构建应用程序和库。
这些库是作为静态库构建的,并且头文件和libX.a文件已添加到项目中。
是否可以使用较新的gcc(例如gcc 7)来构建我的应用程序,而无需重新构建库?
如果我尝试使用更新的gcc进行构建并成功,这是否意味着以后不会出现任何与此相关的意外问题?

1 个答案:

答案 0 :(得分:1)

如评论中所述,在进行如此重大的编译器升级时,您应该重新编译所有内容。

成功链接并不能保证您在运行时不会遇到问题。这是由于GCC版本之间的ABI不兼容。您可能会很幸运,但是从长远来看,这是您不能依靠的。

您可以尝试使用GCC's code generation switches,通过查找自从这些库在GCC's ABI policy中进行编译以来发生的变化,使编译后的文件与旧库兼容,但是我认为这样做不值得。