配置交叉编译工具链
安装
我的交叉编译软件包为arm-2009q3.tar.bz2,首先在/usr/local目录下建立arm目录,将软件包解压到该目录下。linux中所有目录性质都是一样的,装在哪个目录下都是可以的,为了方便管理,一般软件之类的都装在/usr目录下。
mkdir /usr/local/arm
tar -jxvf arm-2009q3.tar.bz2 -C /usr/local/arm/
导出环境变量
在Linux中,为了能让Shell终端能够自动找到编译器的路径,需要添加环境变量。可以使用export命令增加环境变量。
export PATH=/usr/local/arm/arm-2009q3/bin:$PATH
export导出的环境变量只在当前终端有效,此时打开另外一个终端就没用了。解决办法就是在~/.bashrc里面添加上面这条指令(每一个终端被打开,.bashrc都会自动被执行)。有一点要注意的是 .bashrc 是针对某一个用户的,因为我一般使用的是root用户,所以我需要配置/root/.bashrc 文件,如果我切换到了普通用户,那么之前的配置是没用的,需要重新配置普通用户。
创建符号链接
为了方便使用,一般要创建符号链接,看起来也更直观。因为可执行程序非常多,一条条指令单独地去执行非常麻烦,所以使用脚本来创建。vi mk.sh后,将以下内容添加到文件中,最后source mk.sh执行就OK了。
执行的时候如果出了错误,那么应该是换行的问题。在windows中按下Enter会写入\r\n(但是windows读取文件时读出来的是\n,很智能的去掉了\r,微笑),Linux中按下Enter会写入\n。
windows下面编辑的脚本粘贴到Linux系统后,要做一些额外的修改把那个多余的\r删掉才行;或者干脆直接在Linux下面编辑脚本。
ln -s arm-none-linux-gnueabi-addr2line arm-linux-addr2line
ln -s arm-none-linux-gnueabi-gprof arm-linux-gprof
ln -s arm-none-linux-gnueabi-ar arm-linux-ar
ln -s arm-none-linux-gnueabi-ld arm-linux-ld
ln -s arm-none-linux-gnueabi-as arm-linux-as
ln -s arm-none-linux-gnueabi-nm arm-linux-nm
ln -s arm-none-linux-gnueabi-c++ arm-linux-c++
ln -s arm-none-linux-gnueabi-objcopy arm-linux-objcopy
ln -s arm-none-linux-gnueabi-c++filt arm-linux-c++filt
ln -s arm-none-linux-gnueabi-objdump arm-linux-objdump
ln -s arm-none-linux-gnueabi-cpp arm-linux-cpp
ln -s arm-none-linux-gnueabi-ranlib arm-linux-ranlib
ln -s arm-none-linux-gnueabi-g++ arm-linux-g++
ln -s arm-none-linux-gnueabi-readelf arm-linux-readelf
ln -s arm-none-linux-gnueabi-gcc arm-linux-gcc
ln -s arm-none-linux-gnueabi-size arm-linux-size
ln -s arm-none-linux-gnueabi-gcc-4.4.1 arm-linux-gcc-4.4.1
ln -s arm-none-linux-gnueabi-sprite arm-linux-sprite
ln -s arm-none-linux-gnueabi-gcov arm-linux-gcov
ln -s arm-none-linux-gnueabi-strings arm-linux-strings
ln -s arm-none-linux-gnueabi-gdb arm-linux-gdb
ln -s arm-none-linux-gnueabi-strip arm-linux-strip
ln -s arm-none-linux-gnueabi-gdbtui arm-linux-gdbtui