编译bazel和tensorflow使用下面链接
https://cloud.tencent.com/developer/article/1435005
编译过程报错
编译gcc: error: unrecognized command line option '-std=c++14'
有两个可能的错误,①:gcc没有安装或者是安装的版本过低了,所以建议先查看是否安装了,没有安装运行:yum -y install gcc gcc-c++,安装了运行gcc -v查看版本,我的版本是4.8.5的,后来升级gcc版本,升级到8.3了,更新过程可以查看https://blog.youkuaiyun.com/qq_33047753/article/details/102805075(注意,使用命令好下载gcc,tar -zxvf 解压又可能不能用,这个跟安装JDK有关系,所以可以去官网下载,再传上服务器运行解压命令就可以成功了);
②cmake没有安装成功,本身先使用yum install cmake,安装成功了,但是编译的时候还是报上面的错误,在网上查了很多,跟我需要的都不符合,有一个博主写了cmake版本低了,我就重新编译了cmake,可以根据该博主写的https://blog.youkuaiyun.com/xingyu97/article/details/97108108,进行编译,
可是要命的的是,看了这个博主的https://blog.youkuaiyun.com/fpcc/article/details/102664881,发现不是那个cmake版本问题,是软连接问题,可是根据他写的,我运行cmke .,一直报错,我也不知道是因为啥,后来我就没有管了,重新对tensorflow编译
bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
没有问题,就是自己总结一下吧,希望可以帮一些朋友吧。
顺便提一下,编译cmake,我也报错了
error: return-statement with no value, in function returning ‘unsigned int’ [-fpermissive],后面还有啥,我忘了,我刚开始使用的是cmake2.8.5,报上面的错,后来我就没有用了,就是用cmake-3.15的,但是也报错了,好像是gcc版本不对呀,这里最好还是指定一下吧,以防万一
-
export CC=/usr/local/bin/gcc
-
export CXX=/usr/local/bin/g++
不过还有可能报错
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.23' not found (required by */3rd-party/protobuf-2.4.1/src/.libs/libprotobuf.so.7)
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.24' not found (required by */3rd-party/protobuf-2.4.1/src/.libs/libprotoc.so.7)
先运行:strings /usr/lib64/libstdc++.so.6 |grep GLIBCXX 得到结果,查看是否有需要的,没有就运行
strings /usr/local/lib64/libstdc++.so.6 |grep GLIBCXX,应该是有的
然后更新:
1)sudo rm -rf /usr/lib64/libstdc++.so.6 //删除旧文件
2)sudo cp /usr/local/lib64/libstdc++.so.6 /usr/lib64 //复制文件
3)sudo ln -s /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6 //链接到新版本
就OK 了