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即可

 

 

 

 
 
 
 

posted on 2019-08-03 01:33  疾速瓜牛  阅读(290)  评论(0编辑  收藏  举报

导航