加载共享库时出错:libgmock.so:无法打开共享对象文件:没有这样的文件或目录

Posted

技术标签:

【中文标题】加载共享库时出错:libgmock.so:无法打开共享对象文件:没有这样的文件或目录【英文标题】:error while loading shared libraries: libgmock.so: cannot open shared object file: No such file or directory 【发布时间】:2020-02-29 13:24:20 【问题描述】:

我目前在配置 CI 时遇到了我创建的一个项目的问题。

简历

面临的问题如下: error while loading shared libraries: libgmock.so: cannot open shared object file: No such file or directory.

对于上述问题,我没有安装 google test/google mock 框架,但 我正在编译它。虽然它说它没有找到,但我已经打印了 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.5centos7 构建。为此,两个构建在具有上述发行版的两个 Docker 容器上运行。有趣的是,对于 Ubuntu 容器,构建不会失败,但对于 CentOS 容器,构建会失败并出现上述错误。虽然上面的错误只是针对单元测试,我可以很容易地为 CentOS 构建禁用它们,但我真的很想了解为什么会发生这个问题。

提前致谢。

【问题讨论】:

【参考方案1】:

我发现了问题。一切都设置正确,除了构建覆盖 LD_LIBRARY_PATH 的单元测试的脚本。它在 Ubuntu 上运行,因为覆盖的 LD_LIBRARY_PATH 对于 Ubuntu 仍然是正确的。

【讨论】:

以上是关于加载共享库时出错:libgmock.so:无法打开共享对象文件:没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

加载共享库时出错:libgfortran.so.1:无法打开共享对象文件:没有这样的文件或目录

/usr/share/code/bin/../code:加载共享库时出错:libX11-xcb.so.1:无法打开共享对象文件:

clang:加载共享库时出错:libtinfo.so.5:无法打开共享对象文件:没有这样的文件或目录

ctags:加载共享库时出错:libgpm.so.1:无法打开共享对象文件:没有这样的文件或目录

psql:加载共享库时出错:libpq.so.5:无法打开共享对象文件:没有这样的文件或目录

wkhtmltopdf - 错误 127 - 加载共享库时出错:libjpeg.so.8:无法打开共享对象文件:没有这样的文件或目录