第一部分 龙芯交叉编译环境搭建
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