创建CubieBoard2交叉编译链

1、安装交叉编译器:

 方式一(未成功):
 sudo apt-get installgcc-arm-linux-gnueabihf
 安装成功后,输入:
 arm-linux-gnueabihf-gcc -v

方式二:arm-linux-gnueabihf-gcc下载

2、获取CubieBoard2的内核源码

可以使用命令:git clone https://github.com/cubieboard2/linux-sunxi

也可以直接打开上面的链接,点击右侧的"clone or downloa"--->"download zip",将内核源码下载到PC桌面,然后拷贝到虚拟机中。

解压:sudo unzip linux-sunxi-sunxi-3.4.zip

3、编译内核

切换到管理员模式:sudo su

3.1 生成配置文件

有两种方式:

  1. 修改内核源码根目录下的Makefile,令ARCH=arm,CROSS_COMPILE=arm-linux-gnueabihf-。然后执行命令:make sun7i_defconfig
  2. 直接执行命令: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sun7i_defconfig

出现错误:recipe for target 'scripts/basic/fixdep' failed

解决办法:sudo apt-get install build-essential

3.2 执行配置文件

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

3.3 开始编译内核

执行命令:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 uImage modules dtbs

如果是多处理系统可以添加选项-jn ,n为数字,表示多处理器的数量,可以加快编译速度。

出现错误:include/linux/compiler-gcc.h:103:30: fatal error: linux/compiler-gcc5.h: 没有那个文件或目录 compilation terminated.

在网上搜索后发现原因:gcc版本太高,而编译内核版本太低。解决办法,要么将gcc降级,要么升高内核源码版本,还有的说自行下载compiler-gcc5.h。

下载compiler-gcc5.h文件,并将其拷贝到源码根目录下的 include/linux 目录,再次编译。

出现错误:"return_address"被多次定义
解决办法:
1)、在内核源码根目录下,执行命令:sudo vim arch/arm/include/asm/ftrace.h,找到如图所示代码的所在行,将 extern 替换为 static。
2)、在内核源码根目录下,执行命令:sudo vim arch/arm/kernel/return_address.c,找到如图所示代码的所在行,将以下代码全部注释或删除。
继续编译。

出现错误:gcc:没有那个文件或目录
解决办法:sudo apt-get install lsb-core
出现错误:缺少libstdc++.so 6
解决办法:

sudo apt-get install lib32stdc++6
sudo apt-get install libc6-i386
sudo apt-get install libstdc++6

4 测试

5 参考文章

posted on 2024-12-20 20:58  guan88  阅读(28)  评论(0)    收藏  举报

导航