寫下給本身備忘,在一次使用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>)。總結