链接犰狳与Xcode

时间:2013-01-03 10:13:47

标签: xcode linker armadillo

我有一个庞大的现有Xcode项目,现在我想添加armadillo库。

http://arma.sourceforge.net/

我已经下载了它(使用macports)并使用Cmake(就像C ++终端应用程序一样)。我没有在我的大项目(iPad应用程序)中使用Cmake,所以我试图链接库。我查看了我使用cmake的xcode-project文件,并将其添加到我的项目中。

添加了: 标题搜索路径:/ opt / local / include 库搜索路径:/ opt / local / lib 其他链接器标志:-larmadillo

我还将libarmadillo.3.4.0.dylib添加到“使用二进制文件链接库”

    ld: warning: ld: warning: ignoring file /opt/local/lib/libarmadillo.3.4.0.dylib, file was built for unsupported file format ( 0xcf 0xfa 0xed 0xfe 0x 7 0x 0 0x 0 0x 1 0x 3 0x 0 0x 0 0x 0 0x 6 0x 0 0x 0 0x 0 ) which is not the architecture being linked (armv7s): /opt/local/lib/libarmadillo.3.4.0.dylibld: warning: ignoring file /opt/local/lib/libarmadillo.dylib, file was built for unsupported file format ( 0xcf 0xfa 0xed 0xfe 0x 7 0x 0 0x 0 0x 1 0x 3 0x 0 0x 0 0x 0 0x 6 0x 0 0x 0 0x 0 ) which is not the architecture being linked (armv7s): /opt/local/lib/libarmadillo.dylib
    ignoring file /opt/local/lib/libz.dylib, file was built for unsupported file format ( 0xcf 0xfa 0xed 0xfe 0x 7 0x 0 0x 0 0x 1 0x 3 0x 0 0x 0 0x 0 0x 6 0x 0 0x 0 0x 0 ) which is not the architecture being linked (armv7s): /opt/local/lib/libz.dylib

    Undefined symbols for architecture armv7s:
      "_deflateInit_", referenced from:
  _compress_data in libTestFlight.a(tf_compression.o)
      "_deflateEnd", referenced from:
  _compress_data in libTestFlight.a(tf_compression.o)
      "_deflate", referenced from:
  _compress_data in libTestFlight.a(tf_compression.o)
    ld: symbol(s) not found for architecture armv7s
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

我有什么想法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:13)

尝试将libz.lib添加到构建目标:

  

将libz添加到带有库构建阶段的链接二进制文件

  1. 在Project Navigator中选择您的项目
  2. 选择要为其启用SDK的目标
  3. 选择Build Phases选项卡
  4. 使用库阶段打开链接二进制文件
  5. 点击+添加新图书馆
  6. 在列表中找到libz.dylib并添加
  7. 重复步骤2 - 6,直到您要使用SDK的所有目标都具有libz.dylib
  8. 来源:https://testflightapp.com/sdk/doc/1.1/

答案 1 :(得分:2)

我最近遇到了类似的问题 - 将犰狳与Xcode联系起来。

我会告诉你我是如何修理它的。 必须采取两个步骤:

1)xcode需要“查看”文件libarmadillo.dylib(我的,位于/usr/lib/) - 这与直接使用libarmadillo.3.81.1.dylib不一样。

为此,请在xcode库(我的/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/lib/)上创建指向该文件的链接。

总结: $ sudo ln -s /usr/lib/libarmadillo.dylib /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/lib/libarmadillo.dylib

2)现在我需要“告诉”xcode在编译命令中包含这个库。

为此:

  1. 打开您的项目(确保在创建上述链接后执行此操作)
  2. 转到TARGETS(我只有一个......)
  3. 点击Build Phases标签
  4. 找到'Link Binary With Libraries'并点击+(添加项目)
  5. 在新打开的窗口类型armadillo上,现在您应该看到前面的库libarmadillo.dylib,只需添加它!
  6. P.S。在使用犰狳的头文件中,我使用完整路径(在我的情况下,#include "/usr/include/armadillo"

    包含它

    就是这样, 我希望我能帮助你。