编译ARM_E9板子所遇到的错误集合

记录:编译ARM_E9的过程

第一步:肯定是拷贝对于的资源包呀,命令 cp

xiao-ma@ubuntu:~/Embed_arm/kernal$ ls
linux_E9_V2_3.0.35_for_linux_v1.1.tar.bz2 

第二步:有了资源包,肯定需要解压出来呀,命令tar -xvf linux_E9_V2_3.0.35_for_linux_v1.1.tar.bz2 
如果要解压到你想指定的文件夹,那就在该命令的后面继续加上-C /你指定的路径吧,下面是你解压出来的:

xiao-ma@ubuntu:~/Embed_arm/kernal/opt/EmbedSky/TQIMX6/E9/Linux/linux_E9_3.0.35_for_Linux$ ls
arch      config_e9_linux  crypto         firmware  init    Kconfig  MAINTAINERS  modules.order  samples   sound  virt
block     COPYING          Documentation  fs        ipc     kernel   Makefile     net            scripts   tools
build.sh  CREDITS          drivers        include   Kbuild  lib      mm           README         security  usr

第三步:编译环境的安装:(必不可少)

sudo apt-get install libncurses5-dev libssl-dev 

sudo apt-get install build-essential openssl 

sudo apt-get install zlibc minizip 

sudo apt-get install libidn11-dev libidn11

这个是安装32位环境库的命令sudo apt-get install lib32ncurses5 ​lib32z1

解释:
build-essential  (基本的编程库(gcc, make等)

libncurses5-dev  (meke menuconfig要调用的)

要是还会有问题出现,就百度一下吧,不同的系统,也是大同小异

第四步:在该目录下使用 make menuconfig  这个命令就是让你进入一个选择题状态(手动狗头)

这里的注意事项就是:如果你的一些环境没有配置好的话,是进不去的,使用,一定要配置好相应的环境

一般有如下:

第五步:这个目录下,有个build.sh 是个自动编译的脚本,使用sudo ./build.sh运行它,就可以编译了,

xiao-ma@ubuntu:~/Embed_arm/kernal/opt/EmbedSky/TQIMX6/E9/Linux/linux_E9_3.0.35_for_Linux$ ls
arch      config_e9_linux  crypto         firmware  init    Kconfig  MAINTAINERS  modules.order  samples   sound  virt
block     COPYING          Documentation  fs        ipc     kernel   Makefile     net            scripts   tools
build.sh  CREDITS          drivers        include   Kbuild  lib      mm           README         security  usr

第六步:编译完成后的状态,你会发现多了些东西

  GEN     .version
  CHK     include/generated/compile.h
  UPD     include/generated/compile.h
  CC      init/version.o
  LD      init/built-in.o
  LD      .tmp_vmlinux1
  KSYM    .tmp_kallsyms1.S
  AS      .tmp_kallsyms1.o
  LD      .tmp_vmlinux2
  KSYM    .tmp_kallsyms2.S
  AS      .tmp_kallsyms2.o
^[  LD      vmlinux
  SYSMAP  System.map
  SYSMAP  .tmp_System.map
  OBJCOPY arch/arm/boot/Image
  Kernel: arch/arm/boot/Image is ready
  GZIP    arch/arm/boot/compressed/piggy.gzip
  AS      arch/arm/boot/compressed/head.o
  CC      arch/arm/boot/compressed/misc.o
  CC      arch/arm/boot/compressed/decompress.o
  SHIPPED arch/arm/boot/compressed/lib1funcs.S
  AS      arch/arm/boot/compressed/lib1funcs.o
  AS      arch/arm/boot/compressed/piggy.gzip.o
  LD      arch/arm/boot/compressed/vmlinux
  OBJCOPY arch/arm/boot/zImage
  Kernel: arch/arm/boot/zImage is ready
  UIMAGE  arch/arm/boot/uImage
Image Name:   Linux-3.0.8
Created:      Mon Sep 29 01:48:07 2020
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    5549776 Bytes = 5419.70 kB = 5.29 MB
Load Address: 10008000
Entry Point:  10008000
  Image arch/arm/boot/uImage is ready
xiao-ma@ubuntu:~/Embed_arm/kernal/opt/EmbedSky/TQIMX6/E9/Linux/linux_E9_3.0.35_for_Linux$ ls
arch      config_e9_linux  crypto         firmware  init    Kconfig  MAINTAINERS  modules.order   README   security    tools  vmlinux
block     COPYING          Documentation  fs        ipc     kernel   Makefile     Module.symvers  samples  sound       usr    vmlinux.o
build.sh  CREDITS          drivers        include   Kbuild  lib      mm           net             scripts  System.map  virt
//再切换到该目录下的arch/arm/boot下:
xiao-ma@ubuntu:~/Embed_arm/kernal/opt/EmbedSky/TQIMX6/E9/Linux/linux_E9_3.0.35_for_Linux$ cd arch/arm/boot/
xiao-ma@ubuntu:~/Embed_arm/kernal/opt/EmbedSky/TQIMX6/E9/Linux/linux_E9_3.0.35_for_Linux/arch/arm/boot$ ls
bootp  compressed  Image  install.sh  Makefile  uImage  zImage

多出来的uImage 就是一个镜像,在烧到arm板子上面就可以了;

至此,编译的工作就结束了

 

记录:编译ARM_E9内核遇到的错误

①:使用build.sh进行编译,发现编译所使用的编译器没有找到,vi build.sh更改为正确的编译器路径即可

xiao-ma@ubuntu:~/Embed_arm/kernal/opt/EmbedSky/TQIMX6/E9/Linux/linux_E9_3.0.35_for_Linux$ l    //解压我们所要编译的内核后,进入到该目录下,ls如下:
arch/      config_e9_linux  crypto/         firmware/  init/    Kconfig*  MAINTAINERS*  modules.order  samples/   sound/  virt/
block/     COPYING*         Documentation/  fs/        ipc/     kernel/   Makefile*     net/           scripts/   tools/
build.sh*  CREDITS*         drivers/        include/   Kbuild*  lib/      mm/           README*        security/  usr/
xiao-ma@ubuntu:~/Embed_arm/kernal/opt/EmbedSky/TQIMX6/E9/Linux/linux_E9_3.0.35_for_Linux$ sudo ./build.sh    //本来可以直接运行buile.sh就可以直接编译了,结果出现了错误
[sudo] password for xiao-ma:
CPU number is 3
make: /home/xiao-ma/Embed_arm/Envirnment/opt/EmbedSky/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/tq-linaro-toolchain/bin/arm-none-linux-gnueabi-gcc: Command not found    //意思就是我所使用的编译器没有找到,所要根本不能进行编译,不过也很奇怪,我查看了下,按照这个路径去寻找他所指定的编译器,是存在的,后面我直接更改了这里的编译器,换成了另外一个编译器的路径就可以编译了
scripts/kconfig/conf --silentoldconfig Kconfig
make: /home/xiao-ma/Embed_arm/Envirnment/opt/EmbedSky/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/tq-linaro-toolchain/bin/arm-none-linux-gnueabi-gcc: Command not found
  CHK     include/linux/version.h
  CHK     include/generated/utsrelease.h
  HOSTCC  scripts/bin2c
  CC      scripts/mod/empty.o
/bin/sh: 1: /home/xiao-ma/Embed_arm/Envirnment/opt/EmbedSky/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/tq-linaro-toolchain/bin/arm-none-linux-gnueabi-gcc: not found
scripts/Makefile.build:305: recipe for target 'scripts/mod/empty.o' failed    //这里的错误一个是前面的编译器引起的,前面的错误解决后,这个问题在后面就没有了,
make[2]: *** [scripts/mod/empty.o] Error 127
scripts/Makefile.build:441: recipe for target 'scripts/mod' failed
make[1]: *** [scripts/mod] Error 2
make[1]: *** Waiting for unfinished jobs....
make[1]: 'include/generated/mach-types.h' is up to date.
  CC      kernel/bounds.s
/bin/sh: 1: /home/xiao-ma/Embed_arm/Envirnment/opt/EmbedSky/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/tq-linaro-toolchain/bin/arm-none-linux-gnueabi-gcc: not found
/home/xiao-ma/Embed_arm/kernal/opt/EmbedSky/TQIMX6/E9/Linux/linux_E9_3.0.35_for_Linux/./Kbuild:35: recipe for target 'kernel/bounds.s' failed
make[1]: *** [kernel/bounds.s] Error 127
Makefile:985: recipe for target 'prepare0' failed
make: *** [prepare0] Error 2
make: *** Waiting for unfinished jobs....
Makefile:506: recipe for target 'scripts' failed
make: *** [scripts] Error 2

②:编译一会儿了,出现错误:

  CC      kernel/itimer.o
  CC      arch/arm/plat-mxc/devices/platform-fsl-usb2-wakeup.o
  CC      mm/truncate.o
  TIMEC   kernel/timeconst.h
Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.
/home/xiao-ma/Embed_arm/kernal/opt/EmbedSky/TQIMX6/E9/Linux/linux_E9_3.0.35_for_Linux/kernel/Makefile:140: recipe for target 'kernel/timeconst.h' failed
make[1]: *** [kernel/timeconst.h] Error 255
Makefile:945: recipe for target 'kernel' failed
make: *** [kernel] Error 2
make: *** Waiting for unfinished jobs....
  CC      mm/vmscan.o
  CC      arch/arm/plat-mxc/devices/platform-imx-pm.o
  CC      arch/arm/plat-mxc/devices/platform-mxc_hdmi.o
  CC      mm/shmem.o
  CC      arch/arm/plat-mxc/devices/platform-mxc-hdmi-core.o
  CC      arch/arm/plat-mxc/devices/platform-imx-hdmi-soc.o


//百度了一下,还好,找到了答案,这里,我们打开 kernel/timeconst.pl
@val = @{$canned_values{$hz}};
if (!defined(@val)) {
@val = compute_values($hz);
}
output($hz, @val);
将if (!defined(@val)) 改为if (!(@val)),再次编译就可以通过了。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值