使用gcc编译应用程序与使用不同gcc版本编译的库不同

时间:2015-04-15 06:28:01

标签: c++ linux gcc compilation

我想用gcc 4.7编译一个c ++应用程序,这个应用程序与一个用gcc 4.4编译的库链接。我只是想知道它是否没有问题?

1 个答案:

答案 0 :(得分:0)

答案是:取决于。这不是真正的编译器或系统特定的。例如,它也适用于Visual Studio。

基本上,不应该这样做(这是一个相当典型的场景)。

然而,重要的问题是,在两个二进制文件之间传递了什么类型的数据。

例如,如果所有字符串都以char *传递,那么一切都很好。一旦你在某处传递std::string(或只是一个指针或引用),那么在两个文件之间实现更改的情况下(例如,不同的STL实现或只是更改了对齐),事情就会中断。

对于其他事情也是如此,甚至是你自己的自定义结构和类。如果界面经过精心设计,那么不应该有任何问题。如果界面没有考虑这种情况,那么您可能会遇到可能非常困难或几乎无法调试的问题(随机崩溃,堆栈对齐问题等)。