问题描述
我正在尝试清理一个 cmake 项目以删除依赖项,但我一直在删除 zlib。该项目创建了两个共享库 a.so 和 b.so,其中 b.so 在构建时链接 a.so。当调用“ldd liba.so”时,libz 不存在,我得到的只是:
linux-vdso.so.1 (0x00007ffff6e49000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f481aac0000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f481a720000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f481a500000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f481a100000)
/lib64/ld-linux-x86-64.so.2 (0x00007f481b600000)
但是在链接“libb”之后:
/usr/bin/c++ -fPIC -O2 -g -DNDEBUG -shared -Wl,-soname,libb.so -o libb.so ...o obj files... -Wl,liba.so
ldd libb.so
linux-vdso.so.1 (0x00007fffe694a000)
liba.so => liba.so (0x00007fb46472f000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fb4640d0000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb463d30000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fb463b10000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb463710000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fb4634e0000) <<<<<<<<<<<
/lib64/ld-linux-x86-64.so.2 (0x00007fb465000000)
当我在“liba”中跳过链接时,zlib 不存在,因此在将“liba”与“libb”链接时它被拉进来。任何地方都没有对 zlib 的依赖,所以我不知道它来自哪里或为什么。有什么方法可以检查 lib 可能从哪里被拉入?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)