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

    xiaoxiao2021-03-25  167

    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

    转载请注明原文地址: https://ju.6miu.com/read-4109.html

    最新回复(0)