我已经下载了一个带有大量静态和动态库的Linux C SDK。自述文件有这样说:
此SDK是使用gcc版本4.5.1编译的。
你不应该将这个SDK二进制文件与其他gcc版本混合,因为 您的应用程序将最终加载两个不同的libcs,其中 导致两个不同的堆。混合堆将导致应用 当试图释放由另一个人分配的内存时崩溃 堆。
我从来没有听说过这样的事情,网上搜索也没有发现任何确认信息。我所发现的是关于ABI的东西,但据我所知,这只是意味着,这些库可能与我的GCC版本不兼容,因为它们根本不运行。这与libc版本或堆无关。
那么,自述文件说的是真的吗?或者,更笼统地说:我是否应该尝试使用我在互联网上下载的另一个GCC版本的库而不是他们编译的库? 如果我想使用几个使用不同GCC版本编译的库,该怎么办?
谢谢大家, Moritz的
答案 0 :(得分:-1)
这可能是由于用于构建SDK的优化所致。如果混合,高度优化的二进制文件有更多崩溃的可能性。