1

我已经下载了一个带有一堆静态和动态库的 Linux C SDK。自述文件是这样说的:

此 SDK 使用 gcc 版本 4.5.1 编译。

您不应该将此 SDK 二进制文件与其他 gcc 版本混合,因为您的应用程序最终会加载两个不同的 libcs​​,这会导致两个不同的堆。当试图释放由另一个堆分配的内存时,混合堆将导致应用程序崩溃。

我从来没有听说过这样的事情,在网上搜索也没有得到任何确认。我确实发现了一些关于 ABI 的东西,但据我了解,这只是意味着这些库可能与我的 GCC 版本不兼容,因为它们根本不运行。这与 libc 版本或堆无关。

那么,自述文件所说的是真的吗?或者,更笼统地说:我应该永远不要尝试将我从 Internet 下载的库与编译时使用的另一个 GCC 版本一起使用吗?如果我想使用几个用不同 GCC 版本编译的库怎么办?

谢谢大家,莫里茨

4

1 回答 1

-1

这可能是由于用于构建 SDK 的优化。如果混合,高度优化的二进制文件有更多崩溃的机会。

于 2013-06-07T11:57:30.900 回答