Bazel 0.5.2自定义工具链,在构建tensorflow时错误地调用归档程序(gcc“ar”)?

问题描述:

试图使用自定义工具链来构建依赖张量流的目标,我的CROSSTOOL和工具链BUILD文件看起来很好。但是建立一个目标时(这取决于tensorflow)巴泽勒错误如下所示:Bazel 0.5.2自定义工具链,在构建tensorflow时错误地调用归档程序(gcc“ar”)?

>>>>>> #@org_tensorflow//tensorflow/core:version_lib [action 'Linking external/org_tensorflow/tensorflow/core/libversion_lib.a'] 
cd blah/blach && \ exec env - \ PWD=/proc/self/cwd \ 
path/to/linux-gnu-gcc-ar @bazel-out/local_linux-opt/bin/external/external/org_tensorflow/tensorflow/core/libversion_lib.a-2.params 

的错误是在“AR”本身的调用,它应该与内容的文件的,不能称为文件本身。

ERROR: path/to/tensorflow/core/BUILD:1033:1:1 Linking of rule 
'@org_tensorflow//tensorflow/core:version_lib' failed: x86_64-unknown-linux- 
gnu-gcc-ar failed: error executing command 
(cd blah/blach && \ exec env - \ PWD=/proc/self/cwd \ 
path/to/linux-gnu-gcc-ar @bazel-out/local_linux- 
opt/bin/external/external/org_tensorflow/tensorflow/core/libversion_lib.a- 
2.params) : com.google.devtools.build.lib.shell.BadExitStatusException: 
Process exited with status 1. 
path/to/ar: invalid option --'@' 
Usage: ar [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin 
<name>] [member-name] [count] archive-file file... etc. 

现在cat'ing

bazel-out/local_linux/opt/bin/external/external/org_tensorflow/tensorflow/core/libversion_lib.a-2.params 

我得到什么应该是变元的为 'AR',这是我得到:

rcsD bazel-out/local_linux-opt/bin/external/org_tensorflow/tensorflow/core/libversion_lib.a bazel-out/local_linux-opt/bin/external/org_tensorflow/tensorflow/core/_objs/version_lib/external/org_tensorflow/tensorflow/core/util/version_info.o 

应该运行的命令是例如:

path/to/custom/toolchain/ar $(cat bazel-out/local_linux/opt/bin/external/external/org_tensorflow/tensorflow/core/libversion_lib.a-2.params) 

我是什么唱?我在bazel的最新版本0.5.2

我的错误,进一步阅读不同版本的'AR'支持文件参数。解决方法是在cc_toolchain规则中将'supports_param_files'参数设置为0。感谢bazel google小组的Marcel Hlopko提供的答案。