2016-05-04 116 views
0

我打算爲我的基於aarch64的設備編譯內核如何編譯ARM EABI工具鏈?

內核源代碼已準備就緒。

和內核文檔說我應該使用ARM-EABI的arm-eabi-4.9工具鏈來編譯內核。

但它是什麼?不同類型的GCC編譯器還是什麼?

是否與GCC 4.9相同?

爲什麼我想知道這一點,因爲我想對編譯器做一些修改,所以我怎樣才能從源代碼構建ARM-EABI的arm-eabi-4.9工具鏈

我做了一些研究,在網絡上,但我發現GCC 4.9的建設進程和有關臂無 - EABI一些信息..

我已經在原來的GCC 4.9 this

頂部修改我可以使用這個源代碼,然後構建GCC 4.9 toolchain for arm,aarch64 --->然後使用這個工具鏈構建內核?

回答

1

在編譯gcc時,一些配置標誌將其構建爲交叉編譯器......您只能爲一對主機/目標體系結構構建gcc二進制文件。當主機和目標相同時,你會得到一個正常的gcc編譯器。如果沒有,你會得到一個交叉編譯器。

要設置您需要添加目標運行./configure

工具鏈是一個架構+一些基本的庫(比如glibc的)一個gcc crosscompilier時--target option。你需要建立這些太...

工具鏈的名字去了弓[-vendor] [-os] - EABI

臂無 - EABI,是baremetal ARM一個交叉編譯(沒有OS)。

arm-linux-gnueabi是一款針對ARM二進制文件的交叉編譯器,可以使用eabi在ARM和Linux操作系統下運行(也可以使用它來構建內核)。

而且那些被手臂工具鏈,你正在尋找aarch64-Linux的GNU

考慮尋找一個預置的工具鏈(Linaro的,embedian),還需要一些微調,所以最好從一個正在運行的二進制文件開始,並運行gcc -v來顯示它是如何構建的。

+0

非常感謝你的回覆,所以我可以修改/使用以下gcc源https://github.com/gcc-mirror/gcc/tree/gcc-4_9-branch然後配置爲aarch64-linux-gnueabi在開始編譯之前,然後編譯工具鏈的權利? –

+0

是的,'--target = aarch64-linux-gnu'。如果這還不夠,請將您的配置設置與[linaro工具鏈](https://releases.linaro.org/14.11/components/toolchain/binaries/) – xvan

+0

使用的配置設置進行比較,我的主機是ubuntu 14.04,因此發現以下3篇關於如何構建gcc編譯器的文章https:// solarianprogrammer。/ 2014/08/26/building-gcc-on-ubuntu-linux/https://raghunathlolur.wordpress.com/2014/06/17/cross-compiling-gcc-4-8-3-for-aarch64- port/http://preshing.com/20141119/how-to-build-a-gcc-cross-compiler/ –