提问人:Satinger 提问时间:3/27/2018 更新时间:7/30/2020 访问量:423
g++ 中的链接器问题
Linker issue in 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
我在这里看到了答案,我认为它与我的答案密切相关。但我无法弄清楚如何使它适应我的问题。
有人可以帮忙吗?
答:
2赞
Mike Kinghan
3/27/2018
#1
链接器说链接需要共享库(大概是因为依赖于它并请求它),但命令行中没有给出。这应该通过在末尾添加来解决,必要时还可以使用其他选项。libtensorflow_framework.so
-ltensorflow_cc
-ltensorflow_framework
-L
0赞
s510
7/30/2020
#2
我也遇到了同样的错误。
如果您使用的是 tensorflow 2,则需要链接 .so.2 文件。您应该在 bazel 构建目录中找到它们。对我来说,它是: /tmp/bazel/output/execroot/org_tensorflow/bazel-out/k8-opt/bin/tensorflow
我在CMAKE中使用以下内容链接了文件: 文件(GLOB 库 “${bazel_bin}/tensorflow/*.so.2”) message(“库 = ${LIBRARIES}”)
评论
libtensorflow_framework.so
-ltensorflow_cc
-ltensorflow_framework
-L