我试图从64位Ubuntu 17.10中的C/C++源代码构建Tensorflow 1.4.0。我试着按照Tensorflow网站和C++的其他网站中的说明使用Bazel,并将它们总结如下:
cd tensorflow
./configure
(select N for all the options)
bazel build --config=opt --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" --local_resources 2048,.5,1.0 //tensorflow:libtensorflow_cc.so //tensorflow:libtensorflow_framework.so //tensorflow/tools/pip_package:build_pip_package
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
sudo -H pip3 install /tmp/tensorflow_pkg/tensorflow-1.4.0rc1-cp36-cp36m-linux_x86_64.whl当我尝试构建一个简单的测试程序并在Eclipse中包含tensorflow/core/public/session.h (将包含路径设置为从git下载的tensorflow根文件夹)时,它抱怨了以下几点:
总之,我在Eclipse中的包含路径中添加了以下路径:
我使用以下库添加了库路径tensorflow目录/bazel-bin/tensorflow:
我还在Eclipse的项目设置中将-std=c++11添加到GCC C++编译器和GCC C++链接器中。最后,它遇到了一个链接器错误:
[tensorflow directory]/tensorflow/core/platform/default/logging.h:187: undefined reference to `tensorflow::internal::CheckOpMessageBuilder::NewString[abi::cxx11]()'我见过一个线程讨论过类似的问题,但我确实设置了-D_GLIBCXX_USE_CXX11_ABI=0和Ubuntu17.10正在使用gcc5或更高版本。
请建议如何修复链接器错误。非常感谢!
发布于 2017-11-15 14:12:04
正式地,您必须在tensorflow源代码中创建您的C++项目,编写构建文件并使用bazel编译它。看看这。
我写了一篇博文:https://tuanphuc.github.io/standalone-tensorflow-cpp/,给出了制作一个独立的C++ Tensorflow与配置的详细说明:- Ubuntu 17.10 - gcc 7.2.0 - tensorflow 1.4.0 - Python 2 or 3 - cmake 3.9.6 - Eigen 3.3.4 - Protobuf (master branch) - Googletest (master branch) - bazel希望它有帮助
参考文献:
发布于 2018-08-09 13:37:47
如果你不想过多地修补你的环境,有两种非官方的选择。一种是使用Floop的C++项目编译Floop并在您的系统上安装。另一种可能是为Tensorflow的C和C++ API安装我的打包项目的C++之一。这两个项目都使用CMake (而不是Bazel)来支持源文件的C++编译。
从Tensorflow的角度来看,tensorflow_cc的优点是,如果需要,可以构建GPU支持,而我的项目只能使用CPU进行推理。
https://stackoverflow.com/questions/47298481
复制相似问题