我想将一堆静态库编译成共享对象。到目前为止我已经
了g++ -Wl -shared -fPIC -o myshared.so objs/*.o
上面的objs / * .o包含使用ar从各种静态库中提取的所有目标文件。
更新:基本上,我想知道我是否可以直接在命令行上使用.a文件而无需提取它们。
答案 0 :(得分:2)
这实际上是一个两步过程:
ar -x mylib.a
gcc -shared *.o -o mylib.so
答案 1 :(得分:0)
您无法使用gcc -shared -o foo.so foo.a
的原因是因为归档的处理方式不同,因为归档中的目标文件仅用于解析未定义的符号 - 由于您未指定任何先前的.o文件,因此没有这些符号。 / p>