交叉编译内核驱动

第一部分 龙芯交叉编译环境搭建

1) 上传压缩包至 Linux 

2) 创建安装目录/data/toolchain(必须使用此目录,否则交叉编译器脚本无法使用)

$ mkdir -p /data/toolchain

3) 将压缩包解压到/data/toolchain 目录

$ tar zxf toolchain.loongson-4.9.3.tgz -C /data/toolchain

测试

1) 创建一个脚本,比如 bb.sh 并添加如下内容:

$ cat bb.sh

#!/bin/sh

source /data/toolchain/setenv/setenv_ppc64e5500_2.0

make $1

2) 创建 Makefile,比如

CC ?= $(CROSS_COMPILE)gcc (注意此处为?=,不要写:=或=)

all = hello

hello: hello.c

clean:

$(RM) $(all)

3) 写一个简单的 hello.c

4) 执行./bb.sh

5) 查看 hello 文件格式

[root@localhost test]# file hello

hello: ELF 64-bit LSB executable, MIPS, MIPS64 rel2 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, with unknown capability 0x756e670000000f41 = 0x104000000070100, not stripped


第二部分  交叉编译内核驱动环境搭建

1,,完成上一部分龙芯交叉编译环境搭建

2,准备内核源码linux-3.10.0.tar.gz,可以将kernel-src.rpm解压提取

3,解压内核源码包,如 tar xmf  linux-3.10.0.tar.gz  -C /root/2k1000/

4,创建用于编译的 kernel 输出目录 KERNEL_TARGET_DIR ,例如/root/2k1000/linux-3.10.0-target

5,将客户提供的 .config, Module.symvers 文件复制到 KERNEL_TARGET_DIR,可在内核二进制包中找到,或者boot目录中

6,在现在的终端设置交叉编译的环境变量

source /data/toolchain/setenv/setenv_loongson  

7,进入 kernel 源码目录 , 执行

make CROSS_COMPILE=mips64el-linux-   O= /root/2k1000/linux-3.10.0-target oldconfig

注 : 下载的代码和目标机器对应的 kernel 代码配置会有出入 ,configure 过程中可以直接选用默认的配

置 .

8,执行 make CROSS_COMPILE=mips64el-linux-   O= /root/2k1000/linux-3.10.0-target modules_prepare

执行完以上命令后 , 在 KERNEL_TARGET_DIR 下可以看到以下文件目录 :

├── arch

├── include

├── kernel

├── Makefile

├── Module.symvers

├── scripts

├── source -> /home/michael/workspace/linux-4.14.69

└── tools

此时驱动编译环境已经准备好了。


第三部分  交叉编译内核驱动

1,解压并进入驱动目录

2,在现在的终端设置交叉编译的环境变量

source /data/toolchain/setenv/setenv_loongson  

3,执行驱动编译

make CROSS_COMPILE=mips64el-linux-   O= /root/2k1000/linux-3.10.0-target  modules M=`pwd`/src

你可能感兴趣的:(交叉编译内核驱动)