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

发布于 2024-10-11 03:52:42 字数 341 浏览 4 评论 0原文

我知道 -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 之间是否有区别。

谢谢。

I know -Wl,-shared is a option of ld. I've seen some person compile like this,

$ gcc -shared -Wl,-soname,libtest.so -o libtest.so *.o

And some person like this

$ gcc -Wl,-shared -Wl,-soname,libtest.so -o libtest.so *.o

So, I want to know if there is some difference between -shared and -Wl,-shared.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

潇烟暮雨 2024-10-18 03:52:42

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

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

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

There is a difference between passing -shared to gcc or -shared to ld (via -Wl). Passing -shared to GCC may enable or disable other flags at link time. In particular, different crt* files might be involved.

To get more information, grep for -shared in GCC's gcc/config/ directory and subdirectories.

Edit: To give a specific example: on i386 FreeBSD, gcc -shared will link in object file crtendS.o, while without -shared, it will link in crtend.o instead. Thus, -shared and -Wl,-shared are not equivalent.

屋檐 2024-10-18 03:52:42

我认为没有什么区别。 -shared 不是 gcc 支持的选项,无论您是否使用 -Wl 指定它,它都会传递给链接器。 gcc 的 -Wl 选项用于指定将逗号分隔的选项列表传递给链接器以进行进一步处理。

I don't think there is any difference. -shared is not a supported option of gcc and it is passed to linker whether you specify it with -Wl or not. -Wl option of gcc is used to specify that a comma separated list of options is to be passed to linker for further processing.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文