博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
archlinux下arm-linux-gcc的交叉编译器的安装
阅读量:2299 次
发布时间:2019-05-09

本文共 3726 字,大约阅读时间需要 12 分钟。

Arch Linux简介

Arch Linux是起源于加拿大的一份致力于使用简单、系统轻量、软件更新速度快的/发行版。创始人Judd Vinet出于对以及的包管理器不满,以及受影响而创立。最初针对i686,但是如今对也支持良好,而且还派生出了针对ARM平台的Arch Linux ARM以及针对内核的(发展缓慢)。
主要特点如下:
1,软件更新速度快
2,包管理简易高效
功能
示例
查询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
Arch Linux包管理器pacman基本用法
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推荐阅读:
  • 2011-05-18 15:47:53
  • 2011-05-19 12:21:31
分享到:
        
阅读(894)| 评论(0)| 转载 (0) |举报
你可能感兴趣的文章
java对象的创建过程
查看>>
深入理解CAS底层实现
查看>>
Find Minimum in Rotated Sorted Array
查看>>
Search for a Range
查看>>
堆排序
查看>>
路由器
查看>>
稳定排序和不稳定排序
查看>>
指针和引用的区别
查看>>
空悬指针和野指针
查看>>
RAII 资源获取就是初始化
查看>>
explicit关键字
查看>>
函数指针 回调函数
查看>>
带参数的main
查看>>
typedef
查看>>
vector重新申请内存
查看>>
C++ STL 排序源码详解(一)
查看>>
C++ STL 排序源码详解(二)
查看>>
各种排序算法的时间复杂度
查看>>
同一进程间的线程共享和独立的资源
查看>>
const修饰符
查看>>