我知道-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之间是否有什么区别。
谢谢。
发布于 2011-01-07 18:04:04
把-shared传给gcc还是把-shared传给ld (通过-Wl)是有区别的。将-shared传递给GCC可能会在链接时启用或禁用其他标志。特别是,可能涉及不同的crt*文件。
要获得更多信息,请访问GCC的-shared目录和子目录中的grep。
编辑:给出一个具体的例子:在i386 FreeBSD上,gcc -shared将链接到对象文件crtendS.o中,而如果没有-shared,则将在crtend.o中进行链接。因此,-shared和-Wl,-shared不是等价的。
发布于 2011-01-07 09:18:18
我不认为有什么区别。-shared不是gcc的一个受支持的选项,无论是否使用-Wl指定它,它都传递给链接器。gcc的-Wl选项用于指定将逗号分隔的选项列表传递给链接器进行进一步处理。
https://stackoverflow.com/questions/4623915
复制相似问题