编译tensorflow动态库的过程真的是万分曲折,版本搭配不对就会出错,报错信息如下:
error: the value of ‘j’ is not usable in a constant expression
定位到是Eigen3的问题,tensorflow版本是1.13.1,一般来说当需要安装第三方包的时候就在tensorflow/workspace.bzl中找类似下面的内容,然后按照连接下载即可,但是这次我用这个方法还是不行。
tf_http_archive(
name = "eigen_archive",
build_file = clean_dep("//third_party:eigen.BUILD"),
sha256 = "753fbb58d0a49b6bcbcfb126ebfa2e21fc97f7471529ba835a096008ce588d8a",
strip_prefix = "eigen-eigen-9f48e814419e",
urls = [
"https://mirror.bazel.build/bitbucket.org/eigen/eigen/get/9f48e814419e.tar.gz",
"https://bitbucket.org/eigen/eigen/get/9f48e814419e.tar.gz",
],
最终在github上看到了一句话 https://github.com/tensorflow/tensorflow/issues/29927
I had the same issue
I resolved it by manually downloading the eigen v 3.3.7 (last stable)
按照这里说的下载Eigen3.3.7版本源码,在源码目录中执行下面的命令
mkdir build
cd build
cmake ..
sudo make install
然后把/usr/local/include/eigen3加入Makefile的include路径即可解决编译tensorflow1.13.1中的报错。
另外可以在Eigen/src/Core/util/Macros.h 查看Eigen的版本号。