1. 程式人生 > >如何通過xmake進行交叉編譯

如何通過xmake進行交叉編譯

xmake 提供了方便靈活的交叉編譯支援,大部分情況下,都不需要配置很複雜的toolchains字首,例如:arm-linux- 什麼的

只要這個toolchains目錄滿足如下結構(大部分的交叉工具鏈都是這個結構):

/home/toolchains_sdkdir
   - bin
       - arm-linux-gcc
       - arm-linux-ld
       - ...
   - lib
       - libxxx.a
   - include
       - xxx.h

那麼,使用xmake進行交叉編譯的時候,只需要進行如下配置和編譯:

$ xmake f -p linux --sdk=/home/toolchains_sdkdir
$ xmake

xmake會去自動探測,gcc等編譯器的字首名:arm-linux-,並且編譯的時候,也會自動加上 連結庫 和 標頭檔案 的搜尋選項:

-I/home/toolchains_sdkdir/include -L/home/toolchains_sdkdir/lib

這些都是xmake自動處理的,不需要手動配置他們。。

但是,也有些例外的情況,比如一些特殊的交叉工具鏈的,編譯器bin目錄,並不在 /home/toolchains_sdkdir/bin 這個位置,而是獨立到了 /usr/opt/bin , 那怎麼辦呢,其實也不麻煩,配置的時候,再指定下bin目錄的位置就好:

$ xmake f -p linux --sdk=/home/toolchains_sdkdir --toolchains=/usr/opt/bin
$ xmake

如果這個工具鏈非常奇葩,就是不按規則出牌,路徑規則很亂的話,那麼xmake也沒辦法那麼智慧,只能手動配置全所有引數了:

$ xmake f -p linux --sdk=/home/toolchains_sdkdir --toolchains=/usr/opt/bin --cxflags="-I/usr/xxx/include" --ldflags="-L/usr/zzz/lib"
$ xmake

另外,如果交叉工具鏈的字首,例如:arm-linux- xmake 沒有檢測成功,你也可以通過--cross=引數手動配置上它:

$ xmake f -p linux --cross=arm-linux- --sdk=/home/toolchains_sdkdir ...