编译使用OpenMP的iOS静态库

时间:2012-08-31 17:45:40

标签: iphone ios c openmp static-linking

我正在编写一个使用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的错误,但现在应该修复它。你知道可能出现什么问题吗?

1 个答案:

答案 0 :(得分:2)

正在寻找一个不存在的动态库。由于您无法在实际设备上使用动态库,因此它将在设备上失败但在构建期间不会失败。您应该尝试手动将库重建为.a文件,并确保使用任何-l参数。这是我给你的最好的。假设这不是越狱(可能是真的),你需要手动链接它。您可以随时将库代码文件添加到项目中。

希望这有帮助。