我应如何在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_tf
和LIBRARY_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.dylib
和libtensorflow_framework.dylib
同样指向libtensorflow_framework.1.dylib
,如提供的那样libtensorflow.1.14.0.dylib
存档。
主要的预期效果是发生以下情况:
.tar.gz
(我正在使用的版本。)
次要的预期效果是理解为什么发生上述错误。
答案 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_PATH
和LIBRARY_PATH
的修改。
在/usr/local/lib
或某些构建脚本中将LD_LIBRARY_PATH
添加到~/.bash_profile
可能是明智的。