ubuntu 12.0.4环境下crosstool-ng 1.18.0编译ARM交叉编译器(Cortex-A8)

来源:互联网 发布:互穿网络防腐涂料 编辑:程序博客网 时间:2024/04/29 20:50

ubuntu 12.0.4环境下crosstool-ng 1.18.0编译ARM交叉编译器(Cortex-A8)  

转自:http://hy907539007.blog.163.com/blog/static/1888458622013749441629/

最近在接触android的东西,硬件用的是cortex-A8三星s5pv210。在编译linux内核和android固件时都要用到交叉编译器。虽然硬件厂家已经提供了交叉编译器,但是*疼的我还是想搞清楚这些工具链是怎么生成的。
在网上查了一下原来现在已经有现成的工具生成了,这就是crosstool-ng,它是一个自动下载、编译、生成交叉编译器的工具。当然在http://www.crosstool-ng.org;会下到最新的版本,我就是下的最新的版本1.18.0(2013.8.4)。
下下来以后就安装了,网上这些几乎都有安装就是大概说一下:
1,首先要安装必备的工具包:
sudo apt-get install autoconf automake libtool libexpat1-dev libncurses5-dev bison flex patch curl cvs texinfo build-essential subversion gawk python-dev gperf g++ aria2
网上很多都说要安装gcj,但是你会发现装不上,呵呵,实验证明有没有无所谓,网上查了一下这是和gcc、java有关的东西,要装的话也可以;只要sudo apt-get install gcj-;就会把所有包列出来。
2,下面就是安装crosstool-ng了

1)配置  ./configure --prefix=/home/heyuan/arm/install  这是安装目录

2)编译  make

3)安装  make install

网上很多人都用sudo,我认为不应该,因为我用了sudo以后menuconfig风格是不一样的,最后还没编译通过,(不知道是不是上边工具加载问题导致menucongif风格不一样)。

然后就在 crosstool安装目录旁边建立一个文件夹build

mkdir -p /home/heyuan/arm/build

chmod 777 build   (最好使用自己的用户来创建这些文件夹,不然会出现权限不够导致的N多问题,反正不用sudo的尽量不要用,这是我总结的经验,很多软件就是因为用了sudo一般用户一运行就出错,root就可以,就是这个原因)。

然后再把刚刚crosstool解压文件里的samples里关于arm有好几种配置

      arm-unknown-eabi是基于裸板跑的,也就是无操作系统

      arm-unknown-linux-gnueabi 是基于linux的

      arm-unknown-linux-uclibcgnueabi 这个应该能看出来了,是为uclinux用的。

      arm-iphone-linux-gnueabi 这个是给iphone用的???没用过,不知道,哈哈。

      arm-cortex_a8-linux-gnueabi 从名字上看是为cortex-a8用的。

在这我用的是cortex-A8的:把相应的文件里的文件拷贝到build文件中(这就不用敲代码了吧)。

然后把里面的 crosstool-config 复制为.config

然后就运行crosstool了;在刚刚安装目录下有一个bin文件里面有一个ct-gn

#/home/heyuan/arm/install/bin/ct-ng menuconfig

网上很多人都要去改工作目录和生产目录,我只能说不要改,我反正一改就悲剧了,编译错误,所以最好不要改。

已下载好的源码包路径和交叉编译器的安装路径。(http://blog.chinaunix.net/u1/34474/showart_2198589.html)
    Paths and misc options  --->
      (${HOME}/src) Local tarballs directory   保存源码包路径
      (${HOME}/x-tools/${CT_TARGET}) Prefix directory  交叉编译器的安装路径
    这两个最好不要改只要在你的家目录建一个src就可以了,其他不要管

    Target options这是重点要修改的地方

        Target Architecture(arm) 这个不用管,已经是arm了。

        Default instruction set mode (arm) 这个也不管,也已经是arm了。

--------------------------------------

   Target options  --->    这个才是要改的,根据自己的芯片来改,这个就不用说了,都知道芯片是什么了什么架构呀,内核呀都知道了。
           *** Target optimisations ***
           (armv4t) Architecture level 
           (arm9tdmi) Emit assembly for CPU    
           (arm920t) Tune for CPU

还有就是C compiler  --->里的内容,还是先不改(我改了就编译不了,应该是每个版本,需要的各个工具版本是有要求的,有待实验)。

还有就是Operating System  --->linux kernel版本了,这个可以自己改,我直接是3.7的最新版。

改完后保存退出。

#/home/heyuan/arm/install/bin/ct-ng build;

40分钟后就编译完了。

最后还要把生的工具链连接一下,让他们都是arm-linux-开头的,写一个批处理的脚本建立一个文件autolin.sh

#!/bin/bash
#
# main
#
if [ $# -lt 1 ] ; then
echo "default path: ./"
BIN_PATH=./
else
BIN_PATH=$1
fi
if [ ! -d $1 ] ; then
echo "path error"
exit
fi
cd $BIN_PATH
SRC=`ls | awk '{print $1}'`
for i in $SRC ; do
if [ "$i" != "autoln.sh" ] ; then
#echo $i
TARGET=`echo $i | sed 's/arm-cortex_a8-linux-gnueabi/arm-linux/g' `
echo $TARGET
ln -s $i $TARGET
fi

0 0
原创粉丝点击