注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

学习笔记

正确的方法如同学习书法,开始的时候要临摹,临摹好了然后创造自己的风格。

 
 
 

日志

 
 

[ARM笔记/cross-tool]使用sourcery g++ lite建立交叉编译环境  

2012-03-06 20:45:41|  分类: ARM |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1. 获取编译器
       我们自己可以编译制作一个交叉编译工具链(Cross-compile Toolchain)来用,但为了方便、稳定起见,我们大多数时候会去选择成熟的第三方工具链。codesourcery的交叉工具链是很常见的一种,以ARM为例,我们可以从codesourcery 处下载到最新的版本。
       可以看到有4个OS平台版本可供选择,如图1,那么该选择哪一个下载呢?

[ARM笔记/cross-tool]使用sourcery g++ lite建立交叉编译环境 - Fantity Wei - 学习笔记

图1

       在codesourcery的一个页面上我们找到了答案:

        This table applies to the target system on which your applications will run, not to the host system on which you run Sourcery G++.

Target Platform Description
EABI/ELF RTOS systems or bare metal systems where no operating system is present. These configurations should not be used to build Linux kernels or applications.
uClinux? Systems running uClinux, i.e. Linux on CPUs without an MMU. Use Sourcery G++ to build both the uClinux kernel and applications.
GNU/Linux? Systems running full Linux, i.e., Linux on CPUs with an MMU. Use Sourcery G++ to build both the Linux kernel and applications.
Microsoft Windows?

Systems running Microsoft Windows 2000, or later.

        也就是说,如果打算用来编译linux kernel或者基于linux的应用程序,则应该选择GNU/Linux;EABI/ELF适用于没有操作系统(或者RTOS)的裸机;uClinux适用于没有MMU的Linux。

[ARM笔记/cross-tool]使用sourcery g++ lite建立交叉编译环境 - Fantity Wei - 学习笔记

        其中 IA32 GNU/Linux TAR 是制作好的编译器,Source TAR是源码,我们下载制作好的编译器,同时还得下载datasheet和用户手册(started Guide(pdf))。注:datasheet 是介绍Gcc和Glibc的版本号,用户手册是介绍怎么使用。
       我们下载 IA32 GNU/Linux TAR  :这是制作好的交叉编译器,比如:
arm-2010.09-50-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

2.配置编译器
1)解压刚下载的压缩文件
$ tar jvxf arm-2010.09-50-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
       则产生一个arm-2010.09目录,进入目录。
       编译器二进制文件全在/bin目录下面。
2)编译器参数设置
       该编译器支持三种版本的cpu,分别是armv4t、armv5t和armv7t。默认支持的是armv5t的cpu。由于本人的开发板是 tq2440.属于armv4t的cpu。所以在编译的时候需要设置相应的参数。对应的命令是:arm-none-linux-gnueabi-gcc -march=armv4t $* filename
       为了方便采用tq手册中的方法。在/bin目录下面建立若干个可执行脚本,分别命名为:arm-linux-xxx(xxx代表的就是同目录下的arm-none-linux-gnueabi-xxx中的xxx) 然后在脚本文件中添加如下内容:
#!/bin/sh
exec arm-none-linux-gnueabi-xxx -march=armv4t $*
       注意:实际上只要对gcc gcc-4.5.1 和g++这三个制作可执行脚本就可以了。而针对其他的使用命令:ln -s arm-none-linux-gnueabi-xxx arm-linux-xxx 做成链接指向对应的编译器就可以了。
       这是新建的arm-linux-gcc脚本
$ cat arm-linux-gcc
#!/bin/sh
exec arm-none-linux-gnueabi-gcc -march=armv4t $*
       然后我们需要弄明白两件事情:
*      我们所需要的交叉编译器的库(lib)的路径是:arm-none-linux-gnueabi/libc/armv4t/lib/目录下的,我们制作的文件系统就是使用该目录下的库;
*      我们所需要的头文件在arm-none-linux-gnueabi/libc/usr/include/目录下的。
       如果以后遇到某程序需要的库,自行编译后添加到编译器中就可以了。到此适合我们的交叉编译器的初步制作算是结束了,然后我们可以将其打包备份。

 

 From:
http://blog.csdn.net/jackyu613/article/details/6211217
http://blog.csdn.net/z741852a2009/article/details/6438763

  评论这张
 
阅读(3644)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017