x210交叉编译工具链的安装与验证
我这里直接用的是s5pv210的板子,根据朱老师大讲堂的方法,根据官方提供的安装包来安装交叉编译工具链(也有用源码安装的,这个逼格较高,暂时按下不表)
arm-2009q3.tar.bz2
把这个安装包mv到/usr/local/目录下新建的arm目录下
tar -jxvf /usr/local/arm/
解压后,会在当前目录生成一个新的目录arm-2009q3
进到里面的bin目录下,ls可以看到交叉编译链中的所有工具如下
arm-none-linux-gnueabi-addr2line #调试时用于定位程序崩溃时的调用栈信息
arm-none-linux-gnueabi-gprof #非常有用的调试工具
arm-none-linux-gnueabi-ar #生成静态库的工具
arm-none-linux-gnueabi-ld #链接器
arm-none-linux-gnueabi-objdump #反汇编
arm-none-linux-gnueabi-cpp #C预处理器
arm-none-linux-gnueabi-gdb #非常有用的调试工具
arm-none-linux-gnueabi-as #这个是干啥的?
arm-none-linux-gnueabi-nm #符号查看
arm-none-linux-gnueabi-objcopy #objcopy被用来复制一个目标文件的内容到另一个文件中,
可以使用不同于源文件的格式来输出目的文件,即可以进行格式转换(.elf转.bin)
arm-none-linux-gnueabi-c++ #这个C++是干啥的?
arm-none-linux-gnueabi-c++filt
arm-none-linux-gnueabi-ranlib
arm-none-linux-gnueabi-g++
arm-none-linux-gnueabi-readelf
arm-none-linux-gnueabi-gcc
arm-none-linux-gnueabi-size
arm-none-linux-gnueabi-gcc-4.4.1
arm-none-linux-gnueabi-sprite
arm-none-linux-gnueabi-gcov
arm-none-linux-gnueabi-strings
arm-none-linux-gnueabi-strip
arm-none-linux-gnueabi-gdbtui
如何验证一下是否安装成功呢,那就去执行
./arm-none-linux-gnueabi-gcc -v
发现打印出来一堆消息,最后是
gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67) 这就说明我们安装成功了
然后我们来把这个目录添加到系统的环境变量
vi ~/.bashrc
然后在尾部添加
export PATH=$PATH:/usr/local/arm/arm-2009q3/bin
注意这个需要退出当前console再进入的时候才会有效
然后是为这些工具创建符号链接
有一个脚本,直接拷过去/usr/local/arm/arm-2009q3/bin执行就行
=========================================================其实上述步骤完全可以用一个脚本来实现,为了以后搭建环境时省一些时间,我这里写了一个一键安装脚本envsetup.sh
#!/bin/bash function create_link(){ echo "creating soft link ..." sudo ln arm-none-linux-gnueabi-addr2line -s arm-linux-addr2line sudo ln arm-none-linux-gnueabi-ar -s arm-linux-ar sudo ln arm-none-linux-gnueabi-as -s arm-linux-as sudo ln arm-none-linux-gnueabi-c++ -s arm-linux-c++ sudo ln arm-none-linux-gnueabi-c++filt -s arm-linux-c++filt sudo ln arm-none-linux-gnueabi-cpp -s arm-linux-cpp sudo ln arm-none-linux-gnueabi-g++ -s arm-linux-g++ sudo ln arm-none-linux-gnueabi-gcc -s arm-linux-gcc sudo ln arm-none-linux-gnueabi-gcc-4.4.1 -s arm-linux-gcc-4.4.1 sudo ln arm-none-linux-gnueabi-gcov -s arm-linux-gcov sudo ln arm-none-linux-gnueabi-gdb -s arm-linux-gdb sudo ln arm-none-linux-gnueabi-gdbtui -s arm-linux-gdbtui sudo ln arm-none-linux-gnueabi-gprof -s arm-linux-gprof sudo ln arm-none-linux-gnueabi-ld -s arm-linux-ld sudo ln arm-none-linux-gnueabi-nm -s arm-linux-nm sudo ln arm-none-linux-gnueabi-objcopy -s arm-linux-objcopy sudo ln arm-none-linux-gnueabi-objdump -s arm-linux-objdump sudo ln arm-none-linux-gnueabi-ranlib -s arm-linux-ranlib sudo ln arm-none-linux-gnueabi-readelf -s arm-linux-readelf sudo ln arm-none-linux-gnueabi-size -s arm-linux-size sudo ln arm-none-linux-gnueabi-sprite -s arm-linux-sprite sudo ln arm-none-linux-gnueabi-strings -s arm-linux-strings sudo ln arm-none-linux-gnueabi-strip -s arm-linux-strip } DIR=$(pwd) echo "--------------------------------------" echo "Before install make sure one thing that:" echo "your PC is x86 arch based machine and" echo "you want programs running on arm arch" echo "--------------------------------------" # judge whether the tool chain exists if [ ! -e arm-2009q3.tar.bz2 ]; then echo "arm-2009q3.tar.bz2 not found" return 1 fi # mv to a default path if [ -e /usr/local/arm ]; then sudo cp arm-2009q3.tar.bz2 /usr/local/arm/arm-2009q3.tar.bz2 else echo "mkdir /usr/local/arm" sudo mkdir /usr/local/arm sudo cp arm-2009q3.tar.bz2 /usr/local/arm/arm-2009q3.tar.bz2 fi # unzip the arm-20093.tar.bz2 cd /usr/local/arm if [ ! -e arm-2009q3 ]; then echo "unzip the arm-20093.tar.bz2" sudo tar -jxf arm-2009q3.tar.bz2 fi # new short name for these tools cd /usr/local/arm/arm-2009q3/bin create_link echo "validating ..." ./arm-linux-gcc -v | grep "gcc version 4.4.1" if [ $? -eq 0 ]; then echo "validation ok!" else echo "validation failed" # get back cd $DIR unset DIR return 1 fi # add path to sys env sed -i '$a export PATH=$PATH:/usr/local/arm/arm-2009q3/bin' ~/.bashrc if [ $? -eq 0 ]; then echo "export to sys env ok!" else echo "export to sys env failed" fi # get back cd $DIR unset DIR echo "arm-linux compile chain env set done!"
使用的时候把压缩包和这个脚本放在同一个目录下,然后执行 . envsetup.sh即可