linker问题在G 中



我有以下.sh文件(从这里(。

g++ -c -pipe -g -std=gnu++11 -Wall -W -fPIC -I. -I./tensorflow
-I./tensorflow/bazel-tensorflow/external/eigen_archive -I./tensorflow/bazel-tensorflow/external/protobuf/src -I./tensorflow/bazel-genfiles -o main.o ./main.cpp
g++  -o Tutorial main.o   -L./tensorflow/bazel-bin/tensorflow
-ltensorflow_cc
cp ./tensorflow/bazel-bin/tensorflow/libtensorflow* .

当我尝试从终端运行此.SH文件时,我会出现错误。因此,我一一执行命令。第一个工作正常,我看到我运行第二个命令时(g -o教程main.o -l./tensorflow/bazel-bin/tensorflow -ltensorflow_cc(我收到以下错误。

/usr/bin/ld: main.o: undefined reference to symbol '_ZN10tensorflow3Env19NewRandomAccessFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt10unique_ptrINS_16RandomAccessFileESt14default_deleteISA_EE'
libtensorflow_framework.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

我在这里看到了答案,我认为它与我的关系密切相关。但是我不知道如何适应我的问题。

有人可以帮忙吗?

链接器说链接需要共享的库 libtensorflow_framework.so(大概是因为 -ltensorflow_cc取决于并请求它(,但在您的命令行中没有给出。应在末尾添加-ltensorflow_framework来解决这一点,并在必要时使用其他-L选项。

我也遇到了相同的错误。

如果您使用的是TensorFlow 2,则需要链接.so.2文件。您应该在Bazel Build目录中找到它们。对我来说是:/tmp/bazel/output/execroot/org_tensorflow/bazel-out/k8-opt/bin/tensorflow

我使用CMAKE中的以下内容链接了文件:file(Glob Libraries; $ {BAZEL_BIN}/TENSORFLOW/*。SO.2&quot"(消息("库" = $ {libraries}"(

最新更新