0

我有一个编译成 .a 文件的库,链接到我的应用程序。(iphone,用 Xcode 开发)

一切似乎都很好,链接似乎成功了,但是当我运行程序时它崩溃了。崩溃点是静态链接库中的 memcmp() 调用。调试器显示了各种名称中带有“dyld”的东西,因此无论出于何种原因,它似乎都无法解析 memcmp,开始寻找动态库,然后失败。

AFAIK memcmp 在 libc 中,所以应该不是问题。(也尝试将 -lc 传递给链接器,但正如我所料,它没有帮助)

那么它应该如何工作呢?为什么静态链接库不能使用 libc 中的任何内容?我应该如何编译它?

谢谢

4

2 回答 2

0

libc 显然是在您的平台上动态链接的。在运行时找不到匹配的版本来满足链接时生成的依赖关系。

除了文件系统损坏或在动态链接发生之​​前调用 chroot(这似乎不太可能)之外,我无法解释这是如何发生的。

于 2009-11-14T05:33:41.370 回答
0

如果我分享问题所在,也许有人会发现它很有用:

该库未针对与主程序相同的操作系统版本进行编译,因此它期望的 libc 与运行时找到的不同。

于 2009-12-17T21:15:11.363 回答