我知道-Wl,-shared
是ld的一个选项。 我见过有人这样编译,
$ gcc -shared -Wl,-soname,libtest.so -o libtest.so *.o
还有一些人喜欢这个
$ gcc -Wl,-shared -Wl,-soname,libtest.so -o libtest.so *.o
所以我想知道-shared
和-Wl,-shared
是否有区别。
谢谢。
将-shared
到gcc或-shared
到ld(通过-Wl
) 是有区别的。 通过-shared
GCC可以在链接时启用或禁用其他标志。 特别是可能涉及不同的crt*
文件。
要获得更多的信息,grep for -shared
在GCC的gcc/config/
目录和子目录中。
编辑:举个具体的例子:在i386 FreeBSD上, gcc -shared
会链接到目标文件crtendS.o
,而没有crtendS.o
,它会链接到crtend.o
。 因此, -shared
和-Wl,-shared
是不等价的。
我不认为有什么区别。 -shared
不是gcc
支持的选项,它被传递给链接器,无论你是否使用-Wl
指定它。 gcc的-Wl
选项用于指定将逗号分隔的选项列表传递给链接器以供进一步处理。