如何从静态库创建共享对象文件

14

如何从静态库创建共享对象文件?我正在使用Cygwin。

以下语法是否正确?

gcc -shared -o libexample.so libexample.a
2个回答

16
gcc -shared -o libexample.so -Wl,--whole-archive libexample.a

请注意,通常情况下,您希望在编译.so中组合的对象是作为PIC编译的,而这通常不适用于静态库。


从共享对象或依赖的共享对象集合创建静态库是否也有可能呢? - white_gecko
是的 - 至少在Unix中,静态库是一个带有索引的对象文件归档(因此名称为.a)。 - AProgrammer
@AProgrammer,如何进行反向过程(特别是索引部分)? - vesperto

6

可能不起作用,但你可以尝试一下:

ar -x libexample.a
gcc -shared *.o -o libexample.so

如果它抱怨-fPIC,那么它可能无法正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接