在 Xcode 中链接 Tensorflow 库时出现运行时错误

在 Xcode 中链接 Tensorflow 库时出现运行时错误

我的问题是关于在 Xcode 中设置@rpath。

我为 C/C++ 构建了独立的 Tensorflow 2 库,以便将它们与在 OSX 10.4.5 上运行的 Xcode 10 一起使用。在 Xcode 中,我设置了 Header Search Paths、Library Search Paths 和 Runpath Search Paths,这些路径是创建的 lib 和 include 目录所在的位置。还将创建的库添加到 Link Binary With Libraries。测试程序构建良好,但出现运行时错误:

dyld:未加载库:@rpath/libtensorflow_cc.so.1

我用的是MacDependency工具检查 libtensorflow_cc.so 库,它突出显示了同样的问题:

错误:无法打开文件‘@rpath/libtensorflow_framework.1.dylib’。

然后我通过在命令行运行这个来调查@rpath 的内容:

otool -l libtensorflow_framework.so

并得到以下内容:

cmd LC_ID_DYLIB
      cmdsize 64
         name @rpath/libtensorflow_framework.so.1 (offset 24)

cmd LC_RPATH
      cmdsize 32
         path @loader_path/ (offset 12)

LC_RPATH 似乎表明@rpath 为空(??)。

我发现有几条建议在命令行中使用 install_name_tool 来修改 @rpath。但我想用 Xcode 来做这件事仅有的如果可能的话,因为坦率地说不能这样做是没有意义的。

所以我的问题分为两部分:

  1. 为什么在 Xcode 中设置 Runpath Search Paths 时运行时 @rpath 似乎未正确设置?它们是否不同?如果不同,那么原因是什么?
  2. 是否可以在 Xcode 的某处设置正确的运行时 rpath 并避免使用 install_name_tool?

我发现了一个类似的问题,已经自我回答但对我来说不起作用,因为在 Xcode 中我的运行路径搜索路径定义已经包括调试和发布。

相关内容