0

我需要在一些 XLA 通行证上运行测试,并且曾经bazel test --config=opt --config=cuda //tensorflow/compiler/xla/service这样做过(从这里)。构建失败并显示以下消息,暗示缺少 googletest 依赖项。

/usr/lib/x86_64-linux-gnu/Scrt1.o: In function `_start':
(.text+0x20): undefined reference to `main'

依赖项libgtest.alibgtest_main.a是从 googletest 源构建的,并使用--linkopt=/path/to/file.

googletest/googletest/libgtest_main.a(gtest_main.cc.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC

添加-DCMAKE_CXX_FLAGS=-fPIC没有帮助。如何更改 cmake 配置以使用 -fPIC 构建?

tensorflow (v1.8) 配置为由本地构建的版本 gcc (5.4) 构建,因为系统的版本 (5.5) 无法构建 tensorflow。那会是问题的原因吗?

4

1 回答 1

0

链接到共享库而不是目标文件存档解决了这个问题,即

bazel test --linkopt="$GTEST_DIR/libgtest.so" --linkopt="GTEST_DIR/libgtest_main.so"

代替,

bazel test --linkopt="$GTEST_DIR/libgtest.a" --linkopt="GTEST_DIR/libgtest_main.a"

这仍然无助于运行 tensorflow 单元测试。单元测试的依赖项存在构建错误,例如。编译//tensorflow/...../absl/base/internal失败。

于 2018-06-14T13:37:53.503 回答