注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
inintrovert的个人空间 https://home.eeworld.com.cn/space-uid-284641.html [收藏] [复制] [分享] [RSS]
日志

VM下ubuntu环境利用crooltool-ng制作交叉编译工具,编译uboot成功

已有 1385 次阅读2013-3-10 22:58 |

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")));

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章