GCC选项-Xlinker和-Wl区别

摘要:
给自己写一张纸条。在使用GCC的过程中,我发现Xlinker和Wl可以在传递给链接器ld时同时使用。这两个命令都可以正确地传递给ld使用。现在我总结一下它们之间的区别。Xlinker后面的第一个参数是空格,而Wl后面的第一字符是“,”。为了将“-assertdefinitions”命令传递给ld,Xlinker需要编写两次“Xlinker”以同时传递两个参数。例如,-Xlinker-assert-Xlinkerdefinitions不能同时写成-Xlinker“-assertdefinitions”,因为链接器会认为这是一个参数,而不是两个。

写下给自己备忘,在一次使用GCC的过程中发现了原来传递给链接器ld可以同时使用Xlinker和Wl两种命令,这两个命令都可以正确传递给ld作为使用,现在总结下两者的区别。

Xlinker后面跟的参数第一个是空格,而Wl后面跟的第一个字符是","。

对于传递“-assert definitions”命令给ld来说,Xlinker要一下子传递两个参数需要写两次“Xlinker”,比如-Xlinker -assert -Xlinker defintions而不能一下子写成-Xlinker "-assert definitions"因为链接器会认为这是一个参数,而不是两个参数。如果此时你用的是GNU的linker,通常更简便的做法就是用option=value的方式,比如-Xlinker -Map -Xlinker output.mp可以简写成-Xlinker -Map=output.map。而对于Wl来说,因为他的参数分割是用“,”这样可以不用像Xlinker一样一下子写多个,只需要写多个逗号即可,就拿这个例子来说,可以写成-Wl,-Map,output.map当然了,如果你用的是GNU的linker你也可以-Wl,-Map=output.map。

所以对于rpath来说使用Xlinker可以写成-Xlinker -rpath -Xlinker <dir>(-Xlinker -rpath=<dir>),对于Wl来说可以写成-Wl,rpath,<dir>(-Wl,rpath=<dir>)。

免责声明:文章转载自《GCC选项-Xlinker和-Wl区别》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Winform开发之窗体显示、关闭与资源释放linux配置SOCK5代理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Ubuntu 安装不同版本的 gcc/g++ 编译器

主要内容原载自笔者的另一篇博客Ubuntu18.04 使用过程遇到的问题记录。这里单独拿出来便于查阅。 在使用 Matlab R2018b 时,发现其支持的 g++ 版本为 g++ 6.3.0 ,而在 Ubuntu 发行版上,g++ 版本一般随系统升级(有些 distribution 上默认不包含编译环境),所以无法满足上述需求。这里记录下 Ubuntu...

Centos7离线部署redis集群

  目录 一、安装redis需要的依赖 二、安装redis 三、部署redis集群 一、安装redis需要的依赖 1、安装GCC   1、检查是否安装gcc     命令: gcc  -v     如果能输出gcc版本信息,,说明安装了gcc。反之需要安装gcc   2、安装gcc     2.1创建目录/usr/local/gccSrc     2.2...

在WINDOWS中安装使用GSL(MinGW64+Sublime Text3 &amp;amp; Visual Studio)

        本文介绍在Windows下安装使用GSL库,涉及GSL两个版本(官方最新版及GSL1.8 VC版)、msys shell、GCC、G++等内容,最终实现对GSL安装及示例基于MinGW64在Sublime Text3下的编译运行,并实现GSL在Visual Studio下的使用及部分示例测试。还介绍了GSL1.8 VC版本的编译使用过程。...

几种常用库在CentOS下的编译

1操作环境 通过命令查看操作系统版本信息: [root@localhost ~]# cat /proc/version Linux version 3.10.0-327.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (G...

.netcore在linux下使用P/invoke方式调用linux动态库

http://www.mamicode.com/info-detail-2358309.html   .netcore下已经实现了通过p/invoke方式调用linux的动态链接库(*.so)文件 1 [DllImport(@"libdl.so.2")] 2 public static extern IntPtr dlo...

C/C++ GCC/Clang生成和链接静态库/动态库

{ //http://www.360doc.com/content/14/0413/16/15099545_368549362.shtml } GCC/Clang生成和链接静态库/动态库 { 1 2 3 4 5 //add.cpp intadd(inta, intb) { returna + b; } 1 2 3 4 5 6 7...