交叉編譯單個內核模塊

在 x86 服務器上交叉編譯 arm64 的單個內核模塊

前幾天幫助同事交叉編譯了一個 arm64 的內核模塊,在這裏記錄一下關鍵的步驟。

  1. 交叉編譯內核
  2. 修改需要編譯的內核模塊的 Makefile 文件後編譯

修改的 Makefile 文件內容如下:

KERNELDIR :=path
PWD :=$(shell pwd)
obj-m += xxxx.o
all:
        make CROSS_COMPILE=arm-linux-none-eabi- ARCH=arm64 -C $(KERNELDIR) M=$(PWD) modules

上述 Makefile 中我們需要注意的內容如下:

make 命令中要設定交叉編譯器與 ARCH 並使用 -C 選項指定編譯後的內核源代碼根目錄。

CROSS_COMPILE 中不用指定 gcc 的全稱,只需要指定前綴即可。這裏我指定的是 arm-linux-none-eabi-,全稱是 arm-linux-none-eabi-gcc。

如果提示找不到命令,請檢查 PATH 變量是否包含 arm-linux-none-eabi-gcc 所在的目錄項,或者在 CROSS_COMPILE 中直接指定絕對路徑,如 /home/longyu/arm-compile/arm-linux-none-eabi- 。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章