我想把一堆静态库编译成一个共享对象。到目前为止,我有
g++ -Wl -shared -fPIC -o myshared.so objs/*.o
其中,上面的objs/*.o包含使用ar.从各种静态库中提取的所有对象文件
更新:基本上,我想知道是否可以直接在命令行上使用.a文件,而不必提取它们。
这实际上是一个两步过程:
ar -x mylib.a
gcc -shared *.o -o mylib.so
不能使用gcc -shared -o foo.so foo.a
的原因是,存档的处理方式不同,因为存档中的对象文件仅用于解析未定义的符号,而这些符号中没有,因为之前没有指定任何.o文件。