我知道这-Wl,-shared是 ld 的选项。我见过有人这样编译
-Wl,-shared
$ 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
谢谢。
存在 是 通过之间的差-shared,以GCC或-shared给ld(通过-Wl)。传递-shared给GCC可能会在链接时启用或禁用其他标志。特别是,crt*可能涉及不同的文件。
-Wl
crt*
要获取更多信息,请-shared在GCC的gcc/config/目录和子目录中使用grep 。
gcc/config/
编辑: 举一个具体的例子:在i386 FreeBSD上,gcc -shared将链接到目标文件中crtendS.o,而没有时-shared,它将链接到目标文件中crtend.o。因此,-shared并-Wl,-shared不能等同。
gcc -shared
crtendS.o
crtend.o