为什么构建目录中新构建的共享库与安装目录中的副本具有不同的依赖项集?
Why does my newly built shared library in the build directory have a different set of dependencies compared to the copy in the install directory?
谁能告诉我为什么我的构建路径中的共享库与安装目录中的共享库具有一组不同的依赖项?
(base) ciaran@DESKTOP-K0APGUV:/mnt/d/libOmexMeta/cmake-build-release-wsl-ubuntu1804-gcc101/lib$ pwd
/mnt/d/libOmexMeta/cmake-build-release-wsl-ubuntu1804-gcc101/lib
(base) ciaran@DESKTOP-K0APGUV:/mnt/d/libOmexMeta/cmake-build-release-wsl-ubuntu1804-gcc101/lib$ build_dir=/mnt/d/libOmexMeta/cmake-build-release-wsl-ubuntu1804-gcc101/lib
(base) ciaran@DESKTOP-K0APGUV:/mnt/d/libOmexMeta/cmake-build-release-wsl-ubuntu1804-gcc101/lib$ install_dir=/mnt/d/libOmexMeta/install-ubuntu/lib
(base) ciaran@DESKTOP-K0APGUV:/mnt/d/libOmexMeta/cmake-build-release-wsl-ubuntu1804-gcc101/lib$ ldd -d $build_dir/libOmexMeta.so
linux-vdso.so.1 (0x00007ffffd3fb000)
libxml2.so.2 => /usr/lib/x86_64-linux-gnu/libxml2.so.2 (0x00007f417fb20000)
libxslt.so.1 => /usr/lib/x86_64-linux-gnu/libxslt.so.1 (0x00007f417f8e3000)
libsqlite3.so.0 => /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007f417f5da000)
libdb-5.3.so => /usr/lib/x86_64-linux-gnu/libdb-5.3.so (0x00007f417f231000)
libpq.so.5 => /home/ciaran/vcpkg/installed/x64-linux/lib/libpq.so.5 (0x00007f417ed06000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f417eb02000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f417e72e000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f417e390000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f417e178000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f417dd87000)
libicuuc.so.60 => /usr/lib/x86_64-linux-gnu/libicuuc.so.60 (0x00007f417d9cf000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f417d7b2000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f417d58c000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f417d36d000)
/lib64/ld-linux-x86-64.so.2 (0x00007f418089c000)
libicudata.so.60 => /usr/lib/x86_64-linux-gnu/libicudata.so.60 (0x00007f417b7c4000)
相比
(base) ciaran@DESKTOP-K0APGUV:/mnt/d/libOmexMeta/cmake-build-release-wsl-ubuntu1804-gcc101/lib$ ldd -d $install_dir/libOmexMeta.so
linux-vdso.so.1 (0x00007ffe5c1c7000)
libxml2.so.2 => /usr/lib/x86_64-linux-gnu/libxml2.so.2 (0x00007fa93452b000)
libxslt.so.1 => /usr/lib/x86_64-linux-gnu/libxslt.so.1 (0x00007fa9342ee000)
libsqlite3.so.0 => /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007fa933fe5000)
libdb-5.3.so => /usr/lib/x86_64-linux-gnu/libdb-5.3.so (0x00007fa933c3c000)
libpq.so.5 => /usr/lib/x86_64-linux-gnu/libpq.so.5 (0x00007fa9339ee000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa9337ea000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fa933416000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa933078000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fa932e60000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa932a6f000)
libicuuc.so.60 => /usr/lib/x86_64-linux-gnu/libicuuc.so.60 (0x00007fa9326b7000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fa93249a000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fa932274000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa932055000)
libssl.so.1.1 => /usr/lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007fa931dc8000)
libcrypto.so.1.1 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007fa9318fd000)
libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007fa9316b2000)
libldap_r-2.4.so.2 => /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2 (0x00007fa931460000)
/lib64/ld-linux-x86-64.so.2 (0x00007fa9352a7000)
libicudata.so.60 => /usr/lib/x86_64-linux-gnu/libicudata.so.60 (0x00007fa92f8b7000)
libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007fa92f5e1000)
libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007fa92f3af000)
libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007fa92f1ab000)
libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007fa92efa0000)
liblber-2.4.so.2 => /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2 (0x00007fa92ed92000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fa92eb77000)
libsasl2.so.2 => /usr/lib/x86_64-linux-gnu/libsasl2.so.2 (0x00007fa92e95c000)
libgssapi.so.3 => /usr/lib/x86_64-linux-gnu/libgssapi.so.3 (0x00007fa92e71b000)
libgnutls.so.30 => /usr/lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007fa92e3b5000)
libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007fa92e1b1000)
libheimntlm.so.0 => /usr/lib/x86_64-linux-gnu/libheimntlm.so.0 (0x00007fa92dfa8000)
libkrb5.so.26 => /usr/lib/x86_64-linux-gnu/libkrb5.so.26 (0x00007fa92dd1b000)
libasn1.so.8 => /usr/lib/x86_64-linux-gnu/libasn1.so.8 (0x00007fa92da79000)
libhcrypto.so.4 => /usr/lib/x86_64-linux-gnu/libhcrypto.so.4 (0x00007fa92d843000)
libroken.so.18 => /usr/lib/x86_64-linux-gnu/libroken.so.18 (0x00007fa92d62d000)
libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007fa92d2fe000)
libidn2.so.0 => /usr/lib/x86_64-linux-gnu/libidn2.so.0 (0x00007fa92d0e1000)
libunistring.so.2 => /usr/lib/x86_64-linux-gnu/libunistring.so.2 (0x00007fa92cd63000)
libtasn1.so.6 => /usr/lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007fa92cb50000)
libnettle.so.6 => /usr/lib/x86_64-linux-gnu/libnettle.so.6 (0x00007fa92c91a000)
libhogweed.so.4 => /usr/lib/x86_64-linux-gnu/libhogweed.so.4 (0x00007fa92c6e6000)
libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007fa92c465000)
libwind.so.0 => /usr/lib/x86_64-linux-gnu/libwind.so.0 (0x00007fa92c23c000)
libheimbase.so.1 => /usr/lib/x86_64-linux-gnu/libheimbase.so.1 (0x00007fa92c02d000)
libhx509.so.5 => /usr/lib/x86_64-linux-gnu/libhx509.so.5 (0x00007fa92bde3000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007fa92bbab000)
libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007fa92b9a3000)
这些是新建的二进制文件,所以我不明白为什么它们不同。
当你运行ldd
时,你不仅会看到你的直接依赖关系,还会看到你的依赖关系的间接依赖关系。 共享库所依赖的库在两个不同的位置具有不同的依赖项。
特别是,在一个位置,它使用
libpq.so.5 => /home/ciaran/vcpkg/installed/x64-linux/lib/libpq.so.5
而在另一个是
libpq.so.5 => /usr/lib/x86_64-linux-gnu/libpq.so.5
这反过来又带来了不同的库集。
我同意KamilCuk的观点。
尽管这两个文件具有相同的名称,但它们可能不同。使用md5sum
进行检查。
为避免RPATH
副作用,请使用ldd -r option
。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 无法在 CLion 中构建 C++ 项目
- 函数向量_指针有不同的原型,我可以构建一个吗
- 如何使用ndk-build.cmd构建Android.so文件
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- 构建可组合有向图(扫描仪生成器的汤普森构造算法)
- 用callgrind追踪不必要的副本
- 无法使用Qt Creator在Windows中构建yaml-cpp
- 构建一个由C和C++文件组成的库
- 关于:C++中异常对象的范围:为什么我没有得到副本?
- llvm构建器向基本块添加终止符
- 在为LINUX创建共享库时,如何避免STL的私有/弱副本
- FLTK 2.0构建和演示,适用于VS2019的2011年左右的代码库
- 为什么构建目录中新构建的共享库与安装目录中的副本具有不同的依赖项集?
- ifstream的已删除副本构建器的替代方法
- 我可以使用针对2008 VS运行时的构建与VS 2010,而没有VS 2008的副本吗
- std::vector<class *> 无法正确构建副本
- 在构建复合对象时消除不必要的副本