【问题标题】:C/C++ TensorFlow hello_tf.c:(.text+0xa): undefined reference to `TF_Version'C/C++ TensorFlow hello_tf.c:(.text+0xa): undefined reference to `TF_Version'
【发布时间】:2017-11-19 17:55:22
【问题描述】:

您好,我正在尝试将 TensorFlow 用于 C/C++。目前我正在尝试让他们在安装说明中提供的基本程序进行编译。

https://www.tensorflow.org/install/install_c

我正在运行 Ubuntu 的 x86_64 机器上工作。我相信我正确安装了库。当我列出 /usr/local/ 文件夹中的目录时,我会在其中看到 tensorflow。

$: ls /usr/local/include/

张量流

但是,当我尝试编译他们提供的基本程序时,gcc 和 g++ 都失败了

$: gcc -o test hello_tf.cpp

/tmp/cczK3WZs.o:在函数'main'中:

hello_tf.cpp:(.text+0x5): 对 `TF_Version' 的未定义引用

collect2: 错误:ld 返回 1 个退出状态

$: g++ -o test hello_tf.cpp

/tmp/ccl7FitR.o:在函数“main”中:

hello_tf.cpp:(.text+0x5): 对 `TF_Version' 的未定义引用

collect2: 错误:ld 返回 1 个退出状态

安装时一切都很顺利,除了我按照建议安装到系统目录中运行 ldconfig 时。

$ sudo ldconfig /sbin/ldconfig.real:

/usr/lib/libusbredirparser.so.1 不是符号链接

/sbin/ldconfig.real: /usr/lib/libid3tag.so.0 不是符号链接

/sbin/ldconfig.real: /usr/lib/libusbg.so.0 不是符号链接

/sbin/ldconfig.real: /usr/lib/libusbmuxd.so.2 不是符号链接

/sbin/ldconfig.real: /usr/lib/libmtp.so.9 不是符号链接

/sbin/ldconfig.real: /usr/lib/libmad.so.0 不是符号链接

/sbin/ldconfig.real: /usr/lib/libusb-1.0.so.0 不是符号链接

/sbin/ldconfig.real: /usr/lib/libusbredirhost.so.1 不是符号 链接

不过,这些文件似乎不会影响相关程序的编译。当我运行故障排除编译命令时,它似乎工作。我不确定这是为什么

g++ -I/usr/local/include -L/usr/local/lib hello_tf.cpp -ltensorflow

【问题讨论】:

  • 您使用的 cuda 版本是什么?兼容tf版本吗?我遇到了同样的错误,这对我来说是兼容性问题。

标签: c++ c linux gcc tensorflow


【解决方案1】:

你的 hello_tf.cpp 文件被编译成一个叫做对象的东西。因为在您的程序内部,您调用的函数名称编译器在您的代码中找不到,因此链接器需要在其他地方查找它们以允许对象调用这些函数的代码。选项 L (-L/usr/local/lib) 告诉它应该在哪些目录中查找,而 l (-l tensorflow) 告诉它应该检查哪些模块。请记住 -l 应该出现在翻译单元 (hello_tf.cpp) 之后。


在此处发布问题之前,您应该做一些研究。您链接的页面将“-L”替换为 export LIBRARY_PATH ...但我认为您的程序不会在没有 -l 的情况下编译。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,但我的情况不同。我不明白为什么 g++ 的顺序或参数在 CentOSUbuntu 上有所不同。

    这在 CentOS 上没有错误,但在 Ubuntu 上失败:

    #source file comes last
    g++ -ltensorflow -o prog prog.cpp
    

    在 Ubuntu 上必须按此顺序:

    #source file comes first
    g++ prog.cpp -o prog -ltensorflow
    

    【讨论】:

      【解决方案3】:

      Ubuntu 中的订单问题。 这行给我一个错误

      gcc -I~/include -L~/lib hello_tf.c -o hello_tf

      /tmp/ccAXMBn1.o:在函数main': hello_tf.c:(.text+0x5): undefined reference to TF_Version'中

      解决方案:

      gcc -I~/include -L~/lib hello_tf.c -ltensorflow -o hello_tf

      ./hello_tf

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-30
        • 1970-01-01
        • 2019-08-30
        • 1970-01-01
        • 2011-12-19
        • 2019-12-07
        • 2011-02-15
        • 1970-01-01
        相关资源
        最近更新 更多