Проблемы со сборкой модульных тестов тензорного потока
Мне нужно запустить тесты на некоторых проходах 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.a
а также libgtest_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?
Тензор потока (v1.8) настроен для сборки с помощью локальной версии gcc (5.4), так как системная версия (5.5) не может создать тензор потока. Это будет причиной проблемы?
1 ответ
Связывание с общими библиотеками вместо архивов объектных файлов решило эту проблему, т. Е.
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"
Это по-прежнему не помогает запускать модульные тесты tenorflow. Есть ошибки сборки в зависимостях модульных тестов, например. сборник //tensorflow/...../absl/base/internal
выходит из строя.