在 x86 服務器上交叉編譯 arm64 的單個內核模塊
前幾天幫助同事交叉編譯了一個 arm64 的內核模塊,在這裏記錄一下關鍵的步驟。
- 交叉編譯內核
- 修改需要編譯的內核模塊的 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- 。