您的位置:首页 > 运维架构 > Linux

archlinux下arm-linux-gcc的交叉编译器的安装

2013-03-21 19:53 1446 查看


Arch Linux简介

Arch Linux是起源于加拿大的一份致力于使用简单、系统轻量、软件更新速度快的GNU/Linux发行版。创始人Judd Vinet出于对Debian以及Red
Hat的包管理器不满,以及受CRUX影响而创立。最初针对i686,但是如今对x86_64也支持良好,而且还派生出了针对ARM平台的Arch Linux ARM以及针对HURD内核的Arch
Hurd(发展缓慢)。

主要特点如下:

1,软件更新速度快

2,包管理简易高效
Arch Linux包管理器pacman基本用法
功能
示例
查询pacman主功能用法
pacman --help
查询pacman子功能用法
pacman -Q -h
本地安装软件包
pacman -U linux-3.5.4-1-i686.pkg.tar.xz
源信息更新
pacman -Sy
软件随源升级
pacman -Syu
从源中查找软件
pacman -Ss linux
从源中下载软件
pacman -Sw linux
从源中安装软件
pacman -S linux
删除软件(包括该软件依赖但是未被其他软件依赖的包)
pacman -R linux
删除/var/cache/pacman/pkg/*中未安装包
pacman -Sc
删除/var/cache/pacman/pkg/*中所有包
pacman -Scc
本地查询所有已安装软件
pacman -Q
本地查询单个软件版本信息
pacman -Q linux
本地查看单个软件包内容
pacman -Ql linux
从源中查询软件组包含软件
pacman -Sg gnome
3,保留类ports系统

pacman适用于已编译包,它只定义一个软件包必须依赖包以提高用户对软件选择的自由度,但是,它对源码级别的定制度为零。一般来说pacman可以满足大部分用户需求,因为一般用户用不着编译源码,即使修改源码,其改动量也极小。从通用性来说,算不上一个包管理系统,因为它只适用于某个特定软件或者该软件临近版本。


archlinux下arm-linux-gcc的交叉编译器的安装

说完了linux下源代码阅读工具的打造,该交叉编译器上场了,这个不用怎么介绍,凡是对嵌入式的感兴趣的,应该都了解交叉编译器这个词了。在archlinux下安装arm-linux的交叉编译器是很简单的事情,因为有yaourt这个超好用的工具的存在,能简化我们很多的工作,好了,废话完毕,入正题。

编译linux内核和u-boot这两个东西,我是用了两个不同的交叉编译器,其实只有一点点的不同,但是用编译内核的编译器去编译u-boot会报错,虽然我有去修改u-boot的编译选项,但是尝试了网络上好多的办法,例如修改编译选项或者定义使用私有库等操作,均得到一致的错误结果,最后在u-boot的官方网站得到噩耗,说要重新***交叉编译器,加入软件浮点的支持才可以。

这里我们先说简单点的安装内核的交叉编译器吧,主要有两套方案:

方案一:

yaourt -S arm-2007q1-arm-none-linux-gnueabi

安装CodeSourcery出的编译器,如果比较懒惰的话,选择不编辑PKGBUILD,直接安装的就是2007q1这个版本的,如果你想要追新的话,可以在安装arm-2010.09-50-arm-none-linux-gnueabi 不过好像用来编译我的这个内核版本会编译不过,后来我才知道的

yaourt -S arm-2010.09-50-arm-none-linux-gnueabi

如果想自定义版本,可以在提示编辑PKGBUILD的时候手动编辑PKGBUILD文件,修改pkgname pkgver pkgrel source md5sums等几个变量,具体的修改为多少依据你从CodeSourcery下载的交叉编译器的版本来确定。其实主要修改source和md5sums就好了,版本啊什么的只是用来你自己识别的,我就后悔没有修改版本等参数,导致虽然是装的高版本的编译器,但是查询软件包的时候还是显示的是2007q1的,都弄混了,但是都不影响内核的编译。此方案的优点是安装时间少,缺点是已经是CodeSourcery的编译好了的预安装包,参数不可再定制了。

方案二:

yaourt -S cross-arm-none-eabi-gcc

这个耗时比较的长,会依次编译安装

cross-arm-none-eabi-binutils

cross-arm-none-eabi-gcc-base

cross-arm-none-eabi-newlib

cross-arm-none-eabi-gcc

cross-arm-none-eabi-gdb



这5个包,而且每次都耗费大量的编译时间,我有次蛋疼执行了这个安装方案,最后执行到cross-arm-none-eabi-gcc 这个的时候实在是等不耐烦了,取消掉了,当然这些软件包是可以一个一个的安装的,并不需要一次安装完,但最终还是要都要安装的.其中cross-arm-none-eabi-gdb 这个用来调试用的,可以选择不安装的。如果你有耐心,可以选择这个方案,此方案优点是参数都可以自己定制(如果有需要的话),这个就是网络上流传的arm-linux-gcc编译安装的自动化版,相当于那么多复杂的步骤都用PKGBUILD来自动搞定了。

u-boot的编译器的***

***编译u-boot的编译器,这个安装方法其实就是上面的方案二,只是我当初最先采用的是方案一,所以才需要有两个交叉编译器的!步骤也很简单,只是在编译cross-arm-none-eabi-gcc这个包的时候加上--with-float=soft 选项就好了,我就没有这个耐心执行方案二了,最后还是在网络上的某个很黑的代码下载网站下载了已经编译好了的版本,网站的名字我就不提了,坚决不打广告,在这里只是感谢那个原来编译这个的童鞋,原谅我连名字都没办法贴出来,一会儿我会把我用到的移植需要用到的相关的资料传到某网盘,专门开个日志贴下载链接的。

下载了别人已经编译好的软件包如 arm-softfloat-linux-gnu-3.4.5.tar.bz2,执行

tar jxvf arm-softfloat-linux-gnu-3.4.5.tar.bz2

解压,得到arm文件夹,然后把整个文件夹拷贝到/usr/local/下,然后在~/.bashrc中添加

export PATH="/usr/local/arm/bin:$PATH"

注销重新登陆就生效了,然后终端输入

arm-softfloat-linux-gnu-gcc -v

如果命令能正常的自动补全,并且版本信息显示如下:

[shenhao@myhost Desktop]$ arm-softfloat-linux-gnu-gcc -v

Reading specs from /usr/local/arm/bin/../lib/gcc/arm-softfloat-linux-gnu/3.4.5/specs

Configured with: /home/allen/downloads/crosstool-0.43/build/arm-softfloat-linux-gnu/gcc-3.4.5-glibc-2.3.6/gcc-3.4.5/configure --target=arm-softfloat-linux-gnu --host=i686-host_pc-linux-gnu --prefix=/opt/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu
--with-float=soft --with-headers=/opt/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/arm-softfloat-linux-gnu/include --with-local-prefix=/opt/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/arm-softfloat-linux-gnu --disable-nls --enable-threads=posix
--enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long

Thread model: posix

gcc version 3.4.5

恭喜你,你成功了!

再次感谢网络上无私的分享者,鄙视那些利用强行别人无私的的分享来挣钱的行为!

shenhao0129推荐阅读:

基于android的linux2.6.25的cs8900的网卡驱动到GEC2412011-05-18
15:47:53
基于android的linux2.6.25的LTV350QV_FOE的LCD驱动到G2011-05-19
12:21:31


分享到:
阅读(894)| 评论(0)| 转载 (0) |举报



简单的用repo获取android的源代码


基于GEC2410的u-boot-1.2.0的移植(一
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: