一尘不染

GCC选项的-shared和-Wl-shared之间的区别

linux

我知道这-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

谢谢。


阅读 5282

收藏
2020-06-07

共1个答案

一尘不染

存在
通过之间的差-shared,以GCC或-shared给ld(通过-Wl)。传递-shared给GCC可能会在链接时启用或禁用其他标志。特别是,crt*可能涉及不同的文件。

要获取更多信息,请-shared在GCC的gcc/config/目录和子目录中使用grep 。

编辑: 举一个具体的例子:在i386 FreeBSD上,gcc -shared将链接到目标文件中crtendS.o,而没有时-shared,它将链接到目标文件中crtend.o。因此,-shared-Wl,-shared不能等同。

2020-06-07