我知道-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
之间是否存在差异。
感谢。
答案 0 :(得分:13)
将-shared
传递给gcc或-shared
传递给ld(通过-Wl
)之间存在差异。将-shared
传递给GCC可以在链接时启用或禁用其他标志。特别是,可能涉及不同的crt*
文件。
要获取更多信息,请在GCC的-shared
目录和子目录中找到gcc/config/
的grep。
修改:举一个具体的例子:在i386 FreeBSD上,gcc -shared
会链接到目标文件crtendS.o
,而没有-shared
,它会链接到而是crtend.o
。因此,-shared
和-Wl,-shared
不等同。
答案 1 :(得分:0)
我认为没有任何区别。 -shared
不是gcc
的受支持选项,无论您是否使用-Wl
指定它,都会将其传递给链接器。 gcc的-Wl
选项用于指定将逗号分隔的选项列表传递给链接器以进行进一步处理。