使用与使用不同 gcc 版本编译的库不同的 gcc 编译应用程序
Posted
技术标签:
【中文标题】使用与使用不同 gcc 版本编译的库不同的 gcc 编译应用程序【英文标题】:compile application with gcc that is different from library compiled with different gcc version 【发布时间】:2015-04-15 06:28:01 【问题描述】:我想用 gcc 4.7 编译一个 c++ 应用程序,这个应用程序与一个用 gcc 4.4 编译的库链接。我只想知道有没有问题?
【问题讨论】:
自己试试看吧。 【参考方案1】:答案是:视情况而定。这并不是真正的编译器或系统特定的。例如,它也适用于 Visual Studio。
基本上,这样做应该没有任何问题(这是一个相当典型的场景)。
但是,重要的问题是,两个二进制文件之间传递了什么样的数据。
例如,如果所有字符串都作为char *
传递,那么一切都很好。一旦你在某个地方传递了一个std::string
(或只是一个指针或对一个的引用),那么如果两个文件之间的实现发生变化(例如不同的 STL 实现或只是改变了对齐方式),事情就会中断。
对于其他事物也是如此,甚至是您自己的自定义结构和类。如果界面经过精心设计,应该没有任何问题。如果界面没有考虑到这种情况,那么您可能会遇到非常难以调试或几乎不可能调试的问题(随机崩溃、堆栈对齐问题等)。
【讨论】:
以上是关于使用与使用不同 gcc 版本编译的库不同的 gcc 编译应用程序的主要内容,如果未能解决你的问题,请参考以下文章