交叉編譯原理分析

2021-09-28 17:33:09 字數 848 閱讀 3445

什麼是交叉編譯:

交叉編譯是指在一種環境(作業系統+晶元指令)中編譯另外一種環境的程式。

名詞定義:

host:執行編譯操作的環境

target:最終執行編譯結果的環境

有些什麼特殊的地方:

編譯器一定是host中的程式,但是編譯器輸出的程式卻是是target中執行的。

host上面不存在target中編譯或者執行需要的標頭檔案和庫。

要做的事情:

需要一種能夠在host上執行,然後把c/c++**程式設計target上面執行的二進位制執行檔案的編譯器。

通過cmake的cmake_c_compiler和cmake_cxx_compiler可以設定編譯器。

每個target環境需要提供我們需要的編譯工具。工具裡面一般分為host和target兩個目錄。注意編譯器一定要到host裡面去找。

並且有的編譯器其實是很多編譯器的集合。比如cuda的編譯器nvcc在執行的時候還需要提供c++的編譯器的路徑。這個可以通過cmake_cuda_host_compiler來設定。

設定能夠找到target中的庫和標頭檔案的位址

可以通過cmake的cmake_find_root_path設定這個目錄。

也有的編譯器要求設定特殊的環境變數來制定查詢的目錄,這個更具編譯工具的文件來確定。

上面說的這些操作就是所謂的toolchain。有的編譯工具會提供乙個toolchain的指令碼,你只需把這個指令碼的位址告訴cmake就行了。使用cmake_toolchain_file來設定。不過現在應該對toolchain也沒有太多神秘感了。

編譯原理及交叉編譯

編譯原理及交叉編譯 編譯原理 gcc g 在執行編譯的時候,只要分四個階段 1 預處理階段,完成巨集定義和include檔案展開等工作 不生成檔案 預處理器cpp 2 根據編譯引數進行不同程度的優化,編譯成彙編 將預處理後的檔案轉換成組合語言,生成.s的檔案 編譯器egcs 3 用彙編器把彙編 進一...

交叉編譯場景分析 arm linux 序

交叉編譯場景分析 arm linux 序 去年花了乙個多月時間,為arm linux平台編譯程式庫,其中包括zlib readline ncurses tslib tinyx libpng jpeg cairo pango glib atk gtk match系列 scim gpe系列。由於之前沒有...

交叉編譯場景分析 arm linux 序

交叉編譯場景分析 arm linux 序 去年花了乙個多月時間,為arm linux平台編譯程式庫,其中包括zlib readline ncurses tslib tinyx libpng jpeg cairo pango glib atk gtk match系列 scim gpe系列。由於之前沒有...