我知道 -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
,而没有-shared
,它将链接到 crtend.o
中。因此,-shared
和 -Wl,-shared
是不等价的。
关于linux - GCC 选项的 -shared 和 -Wl,-shared 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4623915/