我正在编写一个使用 OpenMP 的简单跨平台库,但我不知道如何在 iPhone 应用程序中测试它。
我正在运行 OS X,使用 GCC 4.7,我将它编译为静态库,我还设法将它与 libgomp.a
并将其添加到我在 Xcode 中的测试应用程序。应用程序构建没有任何错误或警告,但是当我在 iPhone 模拟器中运行它时,我得到的只是这条错误消息:
dyld: lazy symbol binding failed: Symbol not found: ___emutls_get_address
Referenced from: /opt/local/lib/gcc47/i386/libgomp.1.dylib
Expected in: /usr/lib/libSystem.B.dylib
dyld: Symbol not found: ___emutls_get_address
Referenced from: /opt/local/lib/gcc47/i386/libgomp.1.dylib
Expected in: /usr/lib/libSystem.B.dylib
我读到在以前版本的 GCC 中有一个错误 ___emutls_get_address
,但现在应该修复了。您知道哪里出了问题吗?
最佳答案
它正在寻找一个不存在的动态库。由于您不能在实际设备上使用动态库,它会在设备上失败,但不会在构建期间失败。您应该尝试手动将库重建为 .a 文件,并确保您没有使用任何 -l 参数。那是我给你的最好的。假设这不是越狱(可能是真的),您将需要简单地手动链接它。您始终可以将库代码文件添加到您的项目中。
希望这对您有所帮助。
关于iphone - 为使用 OpenMP 的 iOS 编译静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12220215/