我想(有效地)通过将多个共享库中的符号引用合并到静态库中并在编译时链接到该静态库来解析它们。我想这样做是为了简化跨多个构建的构建过程-因此,我只需要为构建提供一个静态库。动态库正常运行时可用。这可能吗?
因此,当前,我(通常的处理方式)创建了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 ...
干杯!