我当前在配置CI时遇到了我的foudn项目。
恢复
面临的问题如下:error while loading shared libraries: libgmock.so: cannot open shared object file: No such file or directory
。
对于上述问题,我没有安装google test / google模拟框架,但我正在编译。尽管它说没有,但我已经用以下结果打印了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
我也有ls目录仔细检查:
[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构建,但我真的很想了解为什么会发生此问题。
提前感谢。
我发现了问题。除用于构建覆盖LD_LIBRARY_PATH的单元测试的脚本外,所有内容均已正确设置。它可以在Ubuntu上运行,因为用LD_LIBRARY_PATH替代的LD_LIBRARY_PATH对于Ubuntu仍然正确。