GCC选项的共享和-WI共享区别

我知道-Wl,-sharedld的一个选项。 我见过有人这样编译,

 $ 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选项用于指定将逗号分隔的选项列表传递给链接器以供进一步处理。