创建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 生成配置文件

    有两种方式:

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

        b、直接执行命令: 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 参考文章

  树莓派/RaspberryPi 内核编译

  入手CubieBoard2之制作最新Linux系统

  关于arch/arm/kernel/return_address.c:66:7: error: redefinition of ‘return_address'的错误解决方案

 





   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值