ошибка при загрузке общих библиотек: libgmock.so: не удается открыть файл общего объекта: такого файла или каталога нет - PullRequest
0 голосов
/ 29 февраля 2020

В настоящее время я сталкиваюсь с проблемой с моим проектом при настройке CI.

Resume

Проблема заключается в следующем: error while loading shared libraries: libgmock.so: cannot open shared object file: No such file or directory.

Для решения вышеуказанной проблемы я не устанавливаю google test / google mock framework, а Я его компилирую . Хотя он говорит, что это не так, я напечатал переменную LD_LIBRARY_PATH со следующими результатами:

[root@f2cf44f0b794 st]# echo $LD_LIBRARY_PATH
/st/staging_dir/x86_64-linux-gnu/lib:/st/staging_dir/x86_64-linux-gnu/lib64

Чтобы проверить, не существует ли файл на самом деле, я использовал find и проверил, что он действительно существует :

[root@f2cf44f0b794 st]# find . -name libgmock.so*
./build_dir/x86_64-linux-gnu/googletest/googlemock/libgmock.so
./staging_dir/x86_64-linux-gnu/lib64/libgmock.so

У меня также есть каталог для двойной проверки:

[root@f2cf44f0b794 st]# ls /st/staging_dir/x86_64-linux-gnu/lib64/
cmake        libcrypto.so      libgmock.so       libgtest.so       libprotobuf-lite.so          libprotobuf.so          libprotoc.so          libssh.so    libssh.so.4.8.1  libssl.so      pkgconfig
libcrypto.a  libcrypto.so.1.1  libgmock_main.so  libgtest_main.so  libprotobuf-lite.so.3.8.0.0  libprotobuf.so.3.8.0.0  libprotoc.so.3.8.0.0  libssh.so.4  libssl.a         libssl.so.1.1

Фон

Весь код строится для Ubuntu 14.04.5 и centos7 . Для этого две сборки выполняются на двух Docker контейнерах с указанными выше дистрибутивами. Самое смешное, что для контейнера Ubuntu сборка не завершается неудачно, а для контейнера CentOS происходит сбой с указанной выше ошибкой. Хотя приведенная выше ошибка относится только к модульному тестированию, и я мог легко отключить их для сборки CentOS, я действительно хотел понять, почему эта проблема возникает.

Заранее спасибо.

1 Ответ

0 голосов
/ 29 февраля 2020

Я нашел проблему. Все было настроено правильно, кроме скрипта, который создает модульные тесты, которые переопределяли LD_LIBRARY_PATH. Он работал в Ubuntu, потому что переопределенный LD_LIBRARY_PATH по-прежнему был верным для Ubuntu.

...