|
1.ubuntu能够ping通外网,但是不能上网。
在网上查找资料并实验,发现时vmware软件版本比较低的原因。重新下载新版本的vmware就解决问题了。
2.制作交叉编译工具
下载crosstool-ng,并解压,同目录下新建crosstool-install crosstool-built src tools
四个文件夹,分别用是crosstool的安装文件夹(存放crosstool-ng的应用代码,如ct-ng),执行编译的文件夹(在该文件夹中包含了目标架构的.config文件,在里面执行build命令,即可生成相应架构的编译工具),存放下载软件包的目录(在menuconfig中设置成为此路径),存放生成的工具问价夹(就是最终我们需要的交叉编译工具)。
$cd crosstool-ng-1.9.0 //进入crosstool目录
$./configure --prefix=~/crosstool/crosstool-install
$ make //编译
$ sudo make install //安装
$cd crosstool-build/ //进入crosstool-build目录
$cp ../crosstool-ng-1.9.0/samples/arm-unknown-linux-gnueabi/* ./
$cd arm-unknown-linux-gnueabi
配置ct-ng,指明命令位置
$echo "PATH$PATH:/home/zwy/crosstool/crosstool-install/bin" >> ~/.bashrc //为后面调用ct-ng命令增加环境变量
$ source ~/.bashrc
$ct-ng help
$ct-ng menuconfig //菜单配置,可以指明交叉编译器的路径,和源码包的路径(对于之中没有的源码,它会自己下载下来,已有的则不下)
$ct-ng build
sudo vim /etc/profile,在其中文件的末尾添加这样一行:
PATH=$PATH:/home/zwy/crosstool/tools/bin,其实是我的工具的路径,可以根据实际需要来设定。
source /etc/profile 使修改生效,不用重新登陆。
遇到的问题
1.执行最开始的指令时,会提示很多工具都没有,则需要直接从网上下下来,并安装。直接安装apt-get install XXXXX
如bison none found
2.自动下载工具源码后,有时会发生错误,主要是源码的格式错误或是源码破损,需要从windows中下载后放到源码目录中替换原来的,或是解压,重新压缩成指定的格式。
3.Uboot的编译
$export PATH=/home/zwy/crosstool/tools/bin:$PATH
如果没有执行这句可能出现
bash/bin cannot find command arm-linux-gcc
board.c:127: error: inline function 'coloured_LED_init' cannot be declared weak
board.c:129: error: inline function 'red_LED_on' cannot be declared weak
board.c:131: error: inline function 'red_LED_off' cannot be declared weak
board.c:133: error: inline function 'green_LED_on' cannot be declared weak
board.c:135: error: inline function 'green_LED_off' cannot be declared weak
board.c:137: error: inline function 'yellow_LED_on' cannot be declared weak
board.c:139: error: inline function 'yellow_LED_off' cannot be declared weak
board.c:141: error: inline function 'blue_LED_on' cannot be declared weak
board.c:143: error: inline function 'blue_LED_off' cannot be declared weak
make[1]: *** [board.o] 错误 1
make[1]: Leaving directory `/root/workspace/u-boot-
2009.08/lib_arm'
make: *** [lib_arm/libarm.a] 错误 2
出现错误,内嵌函数不能被声明为weak属性,打开
lib_arm/board.c,定位到127行开始,将其注释掉,修改后结果如
下:
void inline __coloured_LED_init (void) {}
//void inline coloured_LED_init (void) __attribute__
((weak, alias("__coloured_LED_init")));
void inline __red_LED_on (void) {}
//void inline red_LED_on (void) __attribute__((weak,
alias("__red_LED_on")));
void inline __red_LED_off(void) {}
//void inline red_LED_off(void) __attribute__((weak,
alias("__red_LED_off")));
void inline __green_LED_on(void) {}
//void inline green_LED_on(void) __attribute__((weak,
alias("__green_LED_on")));
void inline __green_LED_off(void) {}
//void inline green_LED_off(void)__attribute__((weak,
alias("__green_LED_off")));
void inline __yellow_LED_on(void) {}
//void inline yellow_LED_on(void)__attribute__((weak,
alias("__yellow_LED_on")));
void inline __yellow_LED_off(void) {}
//void inline yellow_LED_off(void)__attribute__((weak,
alias("__yellow_LED_off")));
void inline __blue_LED_on(void) {}
//void inline blue_LED_on(void)__attribute__((weak,
alias("__blue_LED_on")));
void inline __blue_LED_off(void) {}
//void inline blue_LED_off(void)__attribute__((weak,
alias("__blue_LED_off")));