是否可以通过静态库(.a)引用共享库(.so)

时间:2018-07-11 15:18:01

标签: gcc shared-libraries static-libraries ld static-linking

我想(有效地)通过将多个共享库中的符号引用合并到静态库中并在编译时链接到该静态库来解析它们。我想这样做是为了简化跨多个构建的构建过程-因此,我只需要为构建提供一个静态库。动态库正常运行时可用。这可能吗?

因此,当前,我(通常的处理方式)创建了static.a,其中包含许多引用dyn1.so ... dynN.so的对象,并且我可以使用以下方式创建prog.elf:

ar rcs libstatic.a obj1.o obj2.o obj3.o  
gcc prog.o -l:libstatic.a -ldyn1 -ldyn2 -ldyn3 -o prog.elf

我想做的是:

ar rcs libstatic.a obj1.o obj2.o obj3.o libdyn0.so libdyn1.so libdyn2.so  
gcc prog.o -l:libstatic.a -o prog.elf

我尝试了后者,并且.so文件中对符号的引用没有得到解析,尽管这些符号的确位于libstatic.a中,例如

objdump -TC libstatic.a ... 00006ded g DF .text 00000088 DLIB_1.0 func_data_new ...

干杯!

0 个答案:

没有答案
相关问题