GCC選項-Xlinker和-Wl區別
阿新 • • 發佈:2019-02-03
轉自:http://www.cnblogs.com/rickyk/p/4186902.html
備忘:在一次使用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>)。