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

arm-linux交叉编译环境的搭建

2010-07-11 09:30 555 查看
自己参考网上资料整理的,内容都是一些基本型的东东!有兴趣的可以看看~~

一.安装Vmware7.1及ubuntu

Vmware7.1新版本已经放出来好长时间了,貌似加了很多新功能,一直没时间去搞这个。所以,也只有等到考试结束后才能一好好玩玩。下了下来安装后感觉还不错,在刚开始设置的时候版本兼容性比7.0增强了不少,总体性能提升了不少。新版本网上很多地方已经放出源,不过出于安全考虑,还是建议从官网直接下载。下载的时候记得选择全部原包下载哦!文件大小大概在700MB左右的那个。

VMware工作站7.1官方下载地址:

http://downloads.vmware.com/d/info/desktop_downloads/vmware_workstation/7_0

下载安装后,需要打汉化补丁。直接解压汉化包,然后覆盖源文件即可。
完美汉化包:http://u.115.com/file/t5efd6d7e8
下载账号:7912112090   密码:ac70YW60

安装好Vmware后,下一步要做的就是安装新版本ubuntu。告别了ferdora,一时使用起ubuntu还有些不习惯,最郁闷的就是每次要sudo,当然,这不是在root模式下。熟悉了一下ubuntu指令,和fedora的没多少差别(废话,其实都一个内核的!)。关于ubuntu10.04,我无话可说,不仅画面非常和我胃口,而且开机速度明显变快了(貌似有人说可以30s内冷启动)。感叹下!从9.04版本后,我一直冷漠了unbuntu,现在回想起来真的有点遗憾啊!一年的时间,更新了两次,ubuntu总是能从量变转化为质变。

绕了那么大个圈子,来说说在Vmware下面对ubuntu的相关设置吧!首先就是关于软件包的设置:
1.单击“System/系统管理(Administration)/软件源(Software Sources)”,输入用户口令并点击“OK”按钮,进入Software Sources对话框。
2.单击“Download from”右侧的列表框,选择“Other..”进入Choose a Download Server对话框。拉动左侧滚动条,选中“China”下面任一服务器,也可点Choose best Server,让系统自动为你挑选,然后单击“Choose Server”按钮,接下来就会跳出一个对话框,点“Reload”。

3.系统会自动完成更新,如果没有则启动Update Manager自己完成更新。

4.在选择的时候最好是系统自动对源服务器进行ping排序,选择最后速度比较快的就可以了。

 
其次就是关于Vmware-tool的安装:

1.以root身份进入ubuntu。

2..退出到windows,点击setting菜单下的ENABLE VMWARE TOOLS子菜单,确认安装 。

3..此时回到desktop,会看到vmware-tools的iso盘符。

4..在ubuntu10.04下面你可以直接点击盘符,把里面vmware-linux-tools.tar.gz文件复制到相应的文件夹下面,在解压安装即可。由于系统自动挂载盘驱,你也可以直接使用下面的命令

cd /medir

ls

cp vmware-linux-tools.tar.gz /home/tool

cd /home/tool

tar zxf vmware-linux-tools.tar.gz 

解压缩该软件包,默认解压到vmware-linux-tools目录下(与文件名同名)。 

cd vmware-linux-tools 

进入解压后的目录 

./install.pl 

运行安装命令。 这时install提示你是否需要备份以前的配置文件,建议选择“y”后一路回车。到这一步,vmware-tool的安装就算好了,现在要做的就是在wm下让ubuntu和win共享文件夹。相关的设置如下:

1.退出vm后在options>shared folders下面设置要共享的文件夹xxx。

2.选择always enabled,并且上电连接。

3.然后进入ubuntu,使用下面的命令查看文件夹xxx是否挂载。

cd /mnt/hgfs/

ls 显示xxx文件夹

 

刚才说到在ubuntu下面最郁闷的就是每次order都要sudo,没办法,谁叫我们没root权限呢!不过有办法使用root直接登录(不过要小心哦!你权限越多,危险就越大,慎重!切忌!)。如何才能在登录时使用root账号,做下面设置就ok啦!

1.重新设置 root 的密码:$sudo passwd root #按照提示输入两次新的密码,并加以确认。

2.启用root用户登录:$sudo vi /etc/gdm/gdm.conf;打开gnome的配置文件,在末行模式中输入:AllowRoot回车,找到AllowRoot=false ,把false改为true,保存后退出。(不习惯使用vi的,可以选择其他自己安装了的文本编辑器,如vim或者gedit等,我是使用的vim,命令为$sudo vim /etc/gdm/gdm.conf) 之后,重启系统时,就可以用 root 登录了。

3.按照以上设置后,现在还只能在终端中这样登陆或者切换,在ubuntu登陆界面中登陆root用户还会出现“不允许从该屏幕登陆系统管理员”的系统提示,如果想从登陆界面登陆,还要做下一步:点击 System(系统)->system management (系统管理) -> Login Window (登陆窗口)菜单,并切换到 Security (安全)选项页,然后选中其下的“Allow local system administrator login”(允许本地系统管理员登录“选项。当然从登陆界面登陆root用户并不被提倡!)

搞定上面几步,你就不必每次sudo了,哈哈!不过还是得慎重使用哦~~

 

上面的设置里面很多时候都要使用文本编辑器,我使用的是vim,理由是强大得没话说。Vi,emacs,grdit也不错,不过我觉得没vim华丽,便捷,上手……先不说了,看看下面的设置后,相信你一定会喜欢上vim的!当vim在启动时,如果没有找到vimrc或gvimrc,它缺省工作在VI的兼容模式。这意味着,你只能使用VI所具备的功能,而vim中的大量扩展功能将无法使用。当然在/etc/vim/是有这个文件的,但是它不一定适合咱们的需要,而且它是所有用户的默认设置,所以还是自己配置来的舒服。

Vim的安装:apt-get install vim

建议安装的软件包:ctags vim-doc vim-scripts

ctags安装:apt-get install exuberant-ctags

cscope安装:apt-get install cscope

 
关于vim脚本配置文件.vimrc的设置完全是凭借个人喜好的,网上也有很多非常好的配置方案,如果不想自己配置的话,直接download下来就可以了。下面给出的配置文件比较基本,大家也可以自己百度哦!

vim ~/.vimrc

set tabstop=4      "设置tab键的宽度

set backspace=2    "设置退格键可用

set nu!            "显示行号

set vbt_vb=       " vim进行编辑时,如果命令错误,会发出一个响声,该设置去掉响声

set wrap           "自动换行

set nowrap         "不自动换行

set linebreak      "整词换行

上面的脚本编辑好保存就ok了,现在进入vim是不是感觉不一样啦~~

差不多做好前期工作了,接下来就是正式进入交叉编译环境的搭建。

 

二.安装arm-linux-gcc
用crosstool-ng建立arm-linux交叉工具链

crosstool-ng是新的用来建立交叉工具链的工具,它是crosstool的替换者,使用crosstool最多只能编译gcc 4.1.1、glibc 2.x的版本。而crosstool-ng一直保持着更新,现在最新能够建立 gcc 4.3.2版本 glibc 2.9版本,在使用低于4.1.1的版本编译2.6.29 kernel时,会出现include/linux/compiler-gcc4.h:7:3: error: #error Your version of gcc miscompiles the __weak directive

include/linux/compiler-gcc4.h:7 :如下

/* GCC 4.1.[01] miscompiles __weak */
#if __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ <= 1
# error Your version of gcc miscompiles the __weak directive
#endif

所以使用crosstool-ng建立一个新的工具链(gcc 4.3.2 glibc 2.9),以支持对最新kernel编绎。

 
1.crosstool-ng的安装

cd /tmp
mkdir crosstool-ng

wget http://ymorin.is-a-geek.org/download/crosstool-ng/crosstool-ng-1.5.2.tar.bz2

tar jxvf crosstool-ng-1.5.2.tar.bz2

cd /tmp/crosstool-ng-1.5.2

./configure --prefix=/opt/crosstool-ng

make

make install

echo "PATH=$PATH:/opt/crosstool-ng/bin" >> ~/.bashrc

source ~/.bashrc

ct-ng help

         ## ^ ^ 安装成功

 
2.安装必要工具包

bison

flex 

makeinfo ---> texinfo  (实际安装的是后者,下同)

automake

ibtool

cvs

patch (ubuntu 10.04可以不装,已是最新版本)

ncurses/ncurses.h  |

ncurses/curses.h   |  /  -->libncurses5-dev 

ncurses.h         |  /

curses.h          |

aria2c --- > aria2 (选择安装,可以不装的)

curl  (同样选择安装,可以不装)

gcj

g++

svn ---> subversion

使用命令 $ sudo apt-get install xxx 依次安装,为了保险起见,最好都安装一遍,我就是因为中间的几个软件没安装,影响到后面的安装。其它文章中提到cvsd,gawk,我这里没有提示安装,应该是ubuntu10已民经包含了,省事!

 
3.配置本次编译的交叉编译工具链

先建立一个交叉工具链的输出目录,比如是~/arm/crosstool_build  (后简称${build})

根据要建立的工具链,从sample目录拷备相应的配置文件到${build}/。

本次要建立的是arm-unknown-linux-gnueabi

所以拷贝cp crosstool-1.7.0/samples/arm-unknown-linux-gnueabi/* ${build}/

将config文件改名为 .config(或复制一个) cp crosstool-config .config

 
4.配置工具链

为方便后面调用ct-ng 这里先修改环境变量

#export PATH="${PATH}:/some/place/bin"

#cd ${build}    ///这步很重要,后面的操作一定要在这个build目录中执行

#ct-ng menuconfig

这里将进入一个类似于内核配置的界面。需要改的项目不多:我只进行了一些简单配置

(1)很多文章上写要修改path,我懒得改了,反正最后找的到就可以了。所以就不动Paths and misc options项了。

(2)Target options这是重点要修改的地方。(以下配置均是基于已拷备过来的配置。

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

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

经过上面的设置,交叉编译环境算是基本搭建起来了!

 

arm-linux-gcc交叉编译链

1.安装标准的C开发环境。由于ubuntu安装默认是不安装的,所以需要先安装一下(如果已近安装好的话,就可以免去这一步了):
$ sudo apt-get install gcc g++ libgcc1 libg++ make gdb
如果上面这个安装不行,可以试试
$ sudo apt-get install build-essential

2.下载arm-linux-gcc-4.3.2.tgz到任意的目录下,进入这个文件夹
$ sudo tar xvzf arm-linux-gcc-4.3.2.tgz –C / 注意:C 后面有个空格,并且 C 是大写的
执行该命令,将把 arm-linux-gcc 安装到/usr/loca/arm/4.3.2 目录。

3.修改环境变量,把交叉编译器的路径加入到PATH。
方法一:修改/etc/bash.bashrc文件(此文件只对当前用户适用)
$sudo gedit /etc/bash.bashrc
在最后加上export PATH=$PATH:/usr/local/arm/4.3.2/bin
方法二:修改/etc/profile文件(此文件属于系统级别的环境变量,设置在里面的东西对所有用户适用):
$sudo gedit /etc/profile
增加路径设置,在末尾添加如下,保存/etc/profile文件:
export PATH=$PATH:/usr/local/arm/4.3.2/bin
方法三:修改/etc/environment文件
$sudo gedit /etc/environment
原文件应为PATH="/usr/local/sbin:/usr/local/bin:/usr /sbin:/usr/bin:/sbin:/bin: /usr/games修改后PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin"保存退出即可。

4.立即使新的环境变量生效,不用重启电脑:
对应方法一:$ source /root/.bashrc
对应方法二:$ source /etc/profile
方法三立即生效

5.检查是否将路径加入到PATH:
$ echo $PATH
显示/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr /games:/usr/local/arm/4.3.2/bin 说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。

6. 测试是否安装成功
$ arm-linux-gcc -v
上面的命令会显示arm-linux-gcc信息和版本。

在编译好交叉编译工具链后,要在环境变量的 PATH 中添加编译工具的路径(也就是arm-*-linux-*-gcc 所在的路径),这样在编译时系统才找得到编译器的命令。在Ubuntu 下的修改方法如下:

vi ~/.profile,

在最后加上:PATH="<交叉编译工具的路径>:$PATH"。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息