(以下内容,本人根据自己学习情况有修改)
我的问题如下:
1,进入linux-2.6.32.2这个目录,从终端输入命令:
cd /opt/FriendlyARM/mini2440/linux-2.6.32.2
2.执行以下命令来使用缺省配置文件config_w35
sudo cp config_mini2440_w35.config
(注意:w35后面有个空格,然后有个“.”开头的 config )
3.然后执行“sudomake menuconfig“,出现配置内核界面,并且这时不用做任何更改,在主菜单里选择
4.输入以下命令,开始编译内核:
makezImage (有可能加sudo)
这时出现如下错误:
这时出现如下错误:
# make zImage
make:arm-linux-gcc:命令未找到
scripts/kconfig/conf -sarch/arm/Kconfig
make:arm-linux-gcc:命令未找到
CHK include/linux/version.h
make[1]:“include/asm-arm/mach-types.h”是最新的。
CHK include/linux/utsrelease.h
SYMLINKinclude/asm -> include/asm-arm
CC kernel/bounds.s
/bin/sh: arm-linux-gcc: notfound
make[1]: *** [kernel/bounds.s] 错误127
make: *** [prepare0] 错误 2
即出现make:arm-linux-gcc:命令未找到的错误提示。
我开始检查如下:
1,终端输入gedit/etc/profile
在出现的配置文件中,可以看到环境变量(在最后一行)为
exportPATH=$PATH:/usr/local/arm/4.4.3/bin
环境变量的设置没错。
2.之前arm-linux-gcc.4.3.3的编译器都安装好了的,在终端输入 arm-linux-gcc-v
arm-linux-gcc -v
Using built-in specs.
Target:arm-none-linux-gnueabi
Configured with:/opt/FriendlyARM/mini2440/build-toolschain/working/src/gcc-4.4.3/configure--build=i386-build_redhat-linux-gnu--host=i386-build_redhat-linux-gnu --target=arm-none-linux-gnueabi--prefix=/opt/FriendlyARM/toolschain/4.4.3--with-sysroot=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root--enable-languages=c,c++ --disable-multilib --with-arch=armv4t--with-cpu=arm920t --with-tune=arm920t --with-float=soft--with-pkgversion=ctng-1.6.1 --disable-sjlj-exceptions--enable-__cxa_atexit --with-gmp=/opt/FriendlyARM/toolschain/4.4.3--with-mpfr=/opt/FriendlyARM/toolschain/4.4.3--with-ppl=/opt/FriendlyARM/toolschain/4.4.3--with-cloog=/opt/FriendlyARM/toolschain/4.4.3--with-mpc=/opt/FriendlyARM/toolschain/4.4.3--with-local-prefix=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root--disable-nls --enable-threads=posix --enable-symvers=gnu--enable-c99 --enable-long-long--enable-target-optspace
Thread model: posix
gcc version 4.4.3(ctng-1.6.1)
以上说明4.4.3的编译器已经成功安装好。
以上说明4.4.3的编译器已经成功安装好。
以上说明4.4.3的编译器已经成功安装好。
后来发现原因如下:
exportPATH=$PATH:/usr/local/arm/4.4.3/bin
是设置当前用户的PATH,而sudo执行make的时候,使用的是超级用户权限,那也就使用了超级用户的PATH(但是这个PATH里,并没有/usr/local/arm/4.4.3/bin)
解决方法:
1.先打开一个超级用户权限的shell:
命令:sudo–s
2.在当前shell下,设置环境变量:
命令:gedit/etc/profile
在文件末端加上exportPATH=$PATH:/usr/local/arm/4.4.3/bin,并保存。
3.执行source/etc/profile 这是避免重新启动ubuntu而又使刚刚修改的环境变量生效的方法。
再进入到/opt/FriendlyARM/mini2440/linux-2.6.32.2 目录,执行makezImage(有可能加sudo),arm-linux-gcc了,可以编译了。