我有一个编译成.a文件的库,链接到我的应用程序。 (iphone,用Xcode开发)
一切似乎都很好,链接似乎成功,但是当我运行该程序时它会崩溃。崩溃点是在静态链接库中的memcmp()调用。调试器显示了名称中带有“dyld”的所有类型的东西,因此无论出于何种原因它似乎无法解析memcmp,开始寻找动态库,然后失败。
AFAIK memcmp在libc中,所以应该不是问题。 (尝试也将-lc传递给链接器,它没有帮助,就像我预期的那样)
那该怎么办呢?为什么静态链接库不能使用libc中的任何内容?我该如何编译呢?
谢谢
答案 0 :(得分:0)
libc显然是在您的平台上动态链接的。在运行时无法找到匹配版本以满足链接时生成的依赖关系。
我无法解释除了文件系统损坏之外如何发生这种情况,或者在动态链接发生之前调用chroot(这似乎不太可能)。
答案 1 :(得分:0)
如果我分享问题所在,也许有人会发现它很有用:
该库未编译为与主程序相同的操作系统版本,因此它期望的libc与运行时发现的不同。