删除库依赖项

时间:2016-03-30 15:04:44

标签: c++ boost linker shared-libraries dynamic-linking

我有一些依赖于boost的代码,我想编译为动态库:

g++ -Wall -fPIC -o myclass.o -c myclass.cpp 
g++ -shared -Wl,-soname,myclass.so.1 -o lib/myclass.so.1 myclass.o -lc

然而,在编译之后,我注意到仍有一个提升依赖(我正在检查ldd

ldd lib/myclass.so.1
linux-vdso.so.1 (0x00007fff741fd000)
libboost_system.so.1.60.0 => /usr/lib/libboost_system.so.1.60.0 (0x00007f7945649000)
libboost_serialization.so.1.60.0 => /usr/lib/libboost_serialization.so.1.60.0 (0x00007f794540b000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f7945089000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007f7944d83000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f79449e2000)
/usr/lib64/ld-linux-x86-64.so.2 (0x00005590726ae000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f79447cc000)
librt.so.1 => /usr/lib/librt.so.1 (0x00007f79445c3000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f79443a6000)

有没有办法删除我的共享库的boost动态依赖(打包我在.so中调用的对象的当前boost版本)?

2 个答案:

答案 0 :(得分:0)

你所做的一切都是正确的。在c ++中发生的事情很容易忘记,所以重新编译一些东西。删除所有.o文件(以及其他内容)并再次尝试

答案 1 :(得分:0)

  

g++ -shared -Wl,-soname,myclass.so.1 -o lib/myclass.so.1 myclass.o -lc

     

然而,在编译之后,我注意到仍存在提升依赖性

你的意思是“链接后”。

除了g++实际上是其他内容的别名之外,您为生成依赖于boost的库提供的链接命令无法

如果是别名,请不要使用它。如果你有一个被黑网g++或者你修改了它的specs文件,那就不要这样做。

如果您提供的命令不是您使用的实际命令,请向我们显示实际命令(并从中删除提升)。