写下给本身备忘,在一次使用GCC的过程当中发现了原来传递给连接器ld能够同时使用Xlinker和Wl两种命令,这两个命令均可以正确传递给ld做为使用,如今总结下二者的区别。it
Xlinker后面跟的参数第一个是空格,而Wl后面跟的第一个字符是","。io
对于传递“-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。map
因此对于rpath来讲使用Xlinker能够写成-Xlinker -rpath -Xlinker <dir>(-Xlinker -rpath=<dir>),对于Wl来讲能够写成-Wl,rpath,<dir>(-Wl,rpath=<dir>)。总结