【问题标题】:Compiling static library for iOS that uses OpenMP为使用 OpenMP 的 iOS 编译静态库
【发布时间】:2012-08-31 17:45:39
【问题描述】:

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

【问题讨论】:

  • 你链接你的头文件了吗?也许建立一个像真诚明信片和其他人那样的“假”框架会有所帮助......

标签: iphone ios c openmp static-linking


【解决方案1】:

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

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多