在MacOS上安装的TensorFlow C错误?:dyld错误“未加载库:@ rpath / libtensorflow.1.dylib”和“未找到符号:__cg_DGifCloseFile”

时间:2019-09-13 03:28:59

标签: c tensorflow dyld

问题

我应如何在MacOS上安装TensorFlow C库或以其他方式解决错误:

#container{
  display: -ms-grid;
  display: grid;
  -ms-grid-columns: auto 2px auto 2px auto;
  grid-template-columns: auto auto auto;
  -ms-grid-rows: 60px 2px 60px 2px 60px 2px 60px;
  grid-template-rows: repeat(4, 60px);
  grid-gap: 2px;
  width: 180px;
  list-style: none;
}#container > *:nth-child(1){
  -ms-grid-row: 1;
  -ms-grid-column: 1;
}#container > *:nth-child(2){
  -ms-grid-row: 1;
  -ms-grid-column: 3;
}#container > *:nth-child(3){
  -ms-grid-row: 1;
  -ms-grid-column: 5;
}#container > *:nth-child(4){
  -ms-grid-row: 3;
  -ms-grid-column: 1;
}#container > *:nth-child(5){
  -ms-grid-row: 3;
  -ms-grid-column: 3;
}#container > *:nth-child(6){
  -ms-grid-row: 3;
  -ms-grid-column: 5;
}#container > *:nth-child(7){
  -ms-grid-row: 5;
  -ms-grid-column: 1;
}#container > *:nth-child(8){
  -ms-grid-row: 5;
  -ms-grid-column: 3;
}#container > *:nth-child(9){
  -ms-grid-row: 5;
  -ms-grid-column: 5;
}#container > *:nth-child(10){
  -ms-grid-row: 7;
  -ms-grid-column: 1;
}#container > *:nth-child(11){
  -ms-grid-row: 7;
  -ms-grid-column: 3;
}#container > *:nth-child(12){
  -ms-grid-row: 7;
  -ms-grid-column: 5;
}

.item{
  background: grey;
}

.blue-box {
  background-color: blue;
  grid-column: 2/-1;
  -ms-grid-row: 4;
  grid-row: 4;
}

.red-box{
  background-color: red;
  -ms-grid-column: 1;
  -ms-grid-column-span: 2;
  grid-column: 1/3;
  -ms-grid-row: 2;
  -ms-grid-row-span: 2;
  grid-row: 2/4;
}

dyld: Library not loaded: @rpath/libtensorflow.1.dylib
  Referenced from: /Users/Me/./hello_tf
  Reason: image not found
Abort trap: 6

上下文

我使用{mac}仅使用“仅macOS CPU”库跟踪Mac OS的installation instructions,直到dyld: Symbol not found: __cg_DGifCloseFile Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO Expected in: /usr/local/lib/libGIF.dylib in /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO Abort trap: 6 位为止。这是Mac,我用sudo ldconfig代替了update_dyld_shared_cache,然后重新启动,然后构建了提供的示例程序。

ldconfig

我知道了

#include <stdio.h>
#include <tensorflow/c/c_api.h>
int main() {
  printf("Hello from TensorFlow C library version %s\n", TF_Version());
  return 0;
}

按照说明的建议,我用~$ gcc hello_tf.c -ltensorflow -o hello_tf ~$ ./hello_tf dyld: Library not loaded: @rpath/libtensorflow.1.dylib Referenced from: /Users/Me/./hello_tf Reason: image not found Abort trap: 6 进行了重建,并得到了相同的结果。

安装说明说要设置gcc -I/usr/local/include -L/usr/local/lib hello_tf.c -ltensorflow -o hello_tfLIBRARY_PATH以便在非系统目录中进行安装。我决定试一试:

DYLD_LIBRARY_PATH

使用这两种方法(即不使用export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/lib export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/lib 进行编译)现在都可以得到:

-I/usr/local/include -L/usr/local/lib

(嗯,至少是一个不同的错误。)

我的dyld: Symbol not found: __cg_DGifCloseFile Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO Expected in: /usr/local/lib/libGIF.dylib in /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO Abort trap: 6 包含TensorFlow文件:

/usr/local/lib

libtensorflow.1.14.0.dylib libtensorflow.1.dylib libtensorflow.dylib libtensorflow_framework.1.14.0.dylib libtensorflow_framework.1.dylib libtensorflow_framework.dylib libtensorflow.dylib是指向libtensorflow.1.dylib的链接,并且libtensorflow.1.14.0.dyliblibtensorflow_framework.dylib同样指向libtensorflow_framework.1.dylib,如提供的那样libtensorflow.1.14.0.dylib存档。

所需结果

主要的预期效果是发生以下情况:

.tar.gz

(我正在使用的版本。)

次要的预期效果是理解为什么发生上述错误。

1 个答案:

答案 0 :(得分:1)

我通过以下方式修复了该问题:使用Homebrew进行安装,将/usr/local/lib添加到LD_LIBRARY_PATH,然后使用-ltensorflow标志作为GCC最后一个参数进行编译。 dyld似乎很挑剔。如果可能的话,我仍然希望有一个更好的解释。

~$ brew install libtensorflow
 # Homebrew output omitted
~$ export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/lib"
~$ gcc hello_tf.c -o hello_tf -ltensorflow
~$ ./hello_tf
TensorFlow C lib version 1.14.0

这也不适用于问题中提到的对DYLD_LIBRARY_PATHLIBRARY_PATH的修改。

/usr/local/lib或某些构建脚本中将LD_LIBRARY_PATH添加到~/.bash_profile可能是明智的。