樹莓派核心模組交叉編譯

2021-07-03 11:17:10 字數 1928 閱讀 9751

一、 獲得arm gcc 交叉編譯器

安裝該編譯器,把編譯器路徑加入到環境變數中:

gedit ~/.bashrc
在最後一行新增:

export path=$path

:/your_dir/tools-master/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/

然後終端檢視

arm-bcm2708hardfp

-linux

-gnueabi

-gcc

-v

然後就安裝好交叉編譯器了.

二、獲取樹莓派官方核心

mkdir raspeberrypi_src

cd raspberrypi_src

git clone -b rpi-

3.18

.y-rebase

--single-branch git:

如果上面的命令中–single-branch 識別不了,公升級你的git版本即可

進入核心目錄:

編輯根目錄下的makefile檔案,找到下面相似語句,修改為下面:

arch ?= arm

cross_compile ?= arm-bcm2708hardfp-linux-gnueabi-

獲得核心配置檔案

在執行的樹莓派中執行:

ls /proc/

可看到乙個叫config.gz的檔案,他是當前的樹莓派配置選項記錄檔案,我們將他拷出

在linux核心原始碼下執行:

zcat config.gz > .config

然後只需要make就開始編譯核心了,時間會有點長,先睡一覺

三、編寫驅動**

我們在上位機編寫hello world的**:

#include 

#include

#include

module_license("dual bsd/gpl");

static

int hello_init(void)

static

void hello_exit(void)

module_init(hello_init);

module_exit(hello_exit);

相應的makefile**:

ifneq ($(kernelrelease),)  

obj-m

:= hello.o

else

kdir := /home/hcx/work/boards/rpi/kernel/linux-rpi

-3.6

.y

all:

make -c $(kdir) m=$(pwd) modules arch=arm cross_compile=/home/hcx/work/boards/rpi/kernel/rpitools/arm-bcm2708/arm-bcm2708hardfp

-linux

-gnueabi/bin/arm-bcm2708hardfp

-linux

-gnueabi

- clean:

rm -f

*.ko *

.o *

.mod.o *

.mod.c *

.symvers modul*

endif

進入此目錄直接make即可

編譯完成後,我們通過u盤將hello.ko檔案拷貝到樹莓派中,然後通過insmod插入模組

樹莓派 交叉編譯

1 編譯 例如在linux上進行gcc直接編譯,編譯出來的可執行檔案是在本機能夠執行 2 交叉編譯 下位機,如c51,stm32,若沒有足夠內存放編輯器,需要上位機進行跨機編譯來生成可執行檔案的,就是交叉編譯。需要交叉編譯的原因 由於本人嘗試的是樹莓派的交叉編譯,所以使用的工具是 gcc linar...

樹莓派3B 核心交叉編譯

使用 unzip 命令解壓核心和交叉編譯工具 加入環境變數 sudo gedit root bashrc 在末尾新增 export path path home lwl raspberry tools master arm bcm2708 gcc linaro arm linux gnueabihf...

樹莓派之交叉編譯

1 為什麼要使用交叉編譯 交叉編譯工具較快開發的速度。樹莓派中已經安裝了gcc工具鏈,可在樹莓派中直接編譯源 生成可執行檔案。於此同時,pc機上也可使用gcc工具鏈生成可執行 但是和樹莓派上的gcc工具不同,pc機上的gcc工具生成intel或amd晶元上可執行的 但樹莓派卻是arm系列的晶元,顯然...