动态库没有静态库文件的符号

时间:2019-08-09 11:27:12

标签: c++ c gcc

动态库(.so)文件中没有静态库文件或functins的符号。

我正在使用ubuntu 18.04和12.04系统。 我使用-fPIC选项从cpp文件创建了一个目标文件,而不是创建的静态库(.a)。 之后,我使用命令创建了一个动态库:g ++ -shared -I(包含路径)-L(其他库路径)-l(库)-o filename.so -Wl,-soname,filename.so staticlib.a“ 我显示了在12.04 ubuntu系统中创建的符号,但未显示在18.04系统中。 我展示了so文件是由so文件中没有符号创建的。我们可以使用nm -g filename .so。

进行检查。

如果我尝试使用12.04,则会在18.04系统的nm命令中得到这种类型的结果,它会给我所有cpp文件的整个sysmbols。

$ nm -g libPJ.so
                 w _ITM_deregisterTMCloneTable
                 w _ITM_registerTMCloneTable
0000000000201020 B __bss_start
                 w __cxa_finalize
                 w __gmon_start__
0000000000201020 D _edata
0000000000201028 B _end
000000000000052c T _fini
0000000000000410 T _init

1 个答案:

答案 0 :(得分:0)

从静态库链接共享库时,请添加some text important链接器标志。来自man ld

-Wl,-whole-archive