部署交叉编译工具链
一. 安装arm-2009q3
1.1. 在虚拟机创建安装文件夹
1.1.1. 在/usr/local/下创建/usr/local/arm文件夹
1.1.2. 将arm-2009q3.tar.bz2放到相关文件夹
1.1.3. 解压压缩包
a. tar -jxvf arm-2009q3.tar.bz2
root@ubuntu:/usr/local/arm# ls arm-2009q3 arm-2009q3.tar.bz2 root@ubuntu:/usr/local/arm#
1.2. 测试交叉编译工具链
1.2.1. ./arm-none-linux-gnueabi-gcc -v
root@ubuntu:/usr/local/arm# cd arm-2009q3 root@ubuntu:/usr/local/arm/arm-2009q3# cd bin/ root@ubuntu:/usr/local/arm/arm-2009q3/bin# ./arm-none-linux-gnueabi-gcc -v Using built-in specs. Target: arm-none-linux-gnueabi Configured with: /scratch/julian/2009q3-respin-linux-lite/src/gcc-4.4/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --enable-extra-sgxxlite-multilibs --with-arch=armv5te --with-gnu-as --with-gnu-ld --with-specs='%{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables} %{O2:%{!fno-remove-local-statics: -fremove-local-statics}} %{O*:%{O|O0|O1|O2|Os:;:%{!fno-remove-local-statics: -fremove-local-statics}}}' --enable-languages=c,c++ --enable-shared --disable-lto --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery G++ Lite 2009q3-67' --with-bugurl=https://support.codesourcery.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/julian/2009q3-respin-linux-lite/install/arm-none-linux-gnueabi/libc --with-gmp=/scratch/julian/2009q3-respin-linux-lite/obj/host-libs-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-mpfr=/scratch/julian/2009q3-respin-linux-lite/obj/host-libs-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-ppl=/scratch/julian/2009q3-respin-linux-lite/obj/host-libs-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-cloog=/scratch/julian/2009q3-respin-linux-lite/obj/host-libs-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --disable-libgomp --enable-poison-system-directories --with-build-time-tools=/scratch/julian/2009q3-respin-linux-lite/install/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/julian/2009q3-respin-linux-lite/install/arm-none-linux-gnueabi/bin Thread model: posix gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67) root@ubuntu:/usr/local/arm/arm-2009q3/bin#
二. 添加交叉编译工具链到环境变量中
2.1. 环境变量的意义
2.1.1. 环境变量就是操作系统的全局变量。每一个环境变量对操作系统来说都是唯一的,名字和所代表的意义都是唯一的。linux系统可以有很多个环境变量。其中有一部分是linux系统自带的,还有一些是我们自己来扩充的。我们这里涉及到的一个环境变量是
PATH。PATH这个环境变量是系统自带的,它的含义就是系统在查找可执行程序时会搜索的路径范围。
2.2. 将工具链导出到环境变量
2.1.1. 导入环境变量
a. export PATH=/usr/local/arm/arm-2009q3/bin:$PATH
2.1.2. 查看导入后的环境变量
root@ubuntu:/usr/local/arm/arm-2009q3/bin# echo $PATH /usr/local/arm/arm-2009q3/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games root@ubuntu:/usr/local/arm/arm-2009q3/bin#
2.3. 实现打开终端就执行导入
2.3.1. 在~/.bashrc中,添加export PATH=/usr/local/arm/arm-2009q3/bin:$PATH 即可
三. 工具链创建arm-linux-xxx符号链接
3.1. 使用脚本来创建
ln arm-none-linux-gnueabi-addr2line -s arm-linux-addr2line ln arm-none-linux-gnueabi-ar -s arm-linux-ar ln arm-none-linux-gnueabi-as -s arm-linux-as ln arm-none-linux-gnueabi-c++ -s arm-linux-c++ ln arm-none-linux-gnueabi-c++filt -s arm-linux-c++filt ln arm-none-linux-gnueabi-cpp -s arm-linux-cpp ln arm-none-linux-gnueabi-g++ -s arm-linux-g++ ln arm-none-linux-gnueabi-gcc -s arm-linux-gcc ln arm-none-linux-gnueabi-gcc-4.4.1 -s arm-linux-gcc-4.4.1 ln arm-none-linux-gnueabi-gcov -s arm-linux-gcov ln arm-none-linux-gnueabi-gdb -s arm-linux-gdb ln arm-none-linux-gnueabi-gdbtui -s arm-linux-gdbtui ln arm-none-linux-gnueabi-gprof -s arm-linux-gprof ln arm-none-linux-gnueabi-ld -s arm-linux-ld ln arm-none-linux-gnueabi-nm -s arm-linux-nm ln arm-none-linux-gnueabi-objcopy -s arm-linux-objcopy ln arm-none-linux-gnueabi-objdump -s arm-linux-objdump ln arm-none-linux-gnueabi-ranlib -s arm-linux-ranlib ln arm-none-linux-gnueabi-readelf -s arm-linux-readelf ln arm-none-linux-gnueabi-size -s arm-linux-size ln arm-none-linux-gnueabi-sprite -s arm-linux-sprite ln arm-none-linux-gnueabi-strings -s arm-linux-strings ln arm-none-linux-gnueabi-strip -s arm-linux-strip
3.2. 创建后效果
root@ubuntu:/usr/local/arm/arm-2009q3/bin# ls -l total 15744 lrwxrwxrwx 1 root root 32 Sep 9 08:01 arm-linux-addr2line -> arm-none-linux-gnueabi-addr2line lrwxrwxrwx 1 root root 25 Sep 9 08:01 arm-linux-ar -> arm-none-linux-gnueabi-ar lrwxrwxrwx 1 root root 25 Sep 9 08:01 arm-linux-as -> arm-none-linux-gnueabi-as lrwxrwxrwx 1 root root 26 Sep 9 08:01 arm-linux-c++ -> arm-none-linux-gnueabi-c++ lrwxrwxrwx 1 root root 30 Sep 9 08:01 arm-linux-c++filt -> arm-none-linux-gnueabi-c++filt lrwxrwxrwx 1 root root 26 Sep 9 08:01 arm-linux-cpp -> arm-none-linux-gnueabi-cpp lrwxrwxrwx 1 root root 26 Sep 9 08:01 arm-linux-g++ -> arm-none-linux-gnueabi-g++ lrwxrwxrwx 1 root root 26 Sep 9 08:01 arm-linux-gcc -> arm-none-linux-gnueabi-gcc lrwxrwxrwx 1 root root 32 Sep 9 08:01 arm-linux-gcc-4.4.1 -> arm-none-linux-gnueabi-gcc-4.4.1 lrwxrwxrwx 1 root root 27 Sep 9 08:01 arm-linux-gcov -> arm-none-linux-gnueabi-gcov lrwxrwxrwx 1 root root 26 Sep 9 08:01 arm-linux-gdb -> arm-none-linux-gnueabi-gdb lrwxrwxrwx 1 root root 29 Sep 9 08:01 arm-linux-gdbtui -> arm-none-linux-gnueabi-gdbtui lrwxrwxrwx 1 root root 28 Sep 9 08:01 arm-linux-gprof -> arm-none-linux-gnueabi-gprof lrwxrwxrwx 1 root root 25 Sep 9 08:01 arm-linux-ld -> arm-none-linux-gnueabi-ld lrwxrwxrwx 1 root root 25 Sep 9 08:01 arm-linux-nm -> arm-none-linux-gnueabi-nm lrwxrwxrwx 1 root root 30 Sep 9 08:01 arm-linux-objcopy -> arm-none-linux-gnueabi-objcopy lrwxrwxrwx 1 root root 30 Sep 9 08:01 arm-linux-objdump -> arm-none-linux-gnueabi-objdump lrwxrwxrwx 1 root root 29 Sep 9 08:01 arm-linux-ranlib -> arm-none-linux-gnueabi-ranlib lrwxrwxrwx 1 root root 30 Sep 9 08:01 arm-linux-readelf -> arm-none-linux-gnueabi-readelf lrwxrwxrwx 1 root root 27 Sep 9 08:01 arm-linux-size -> arm-none-linux-gnueabi-size lrwxrwxrwx 1 root root 29 Sep 9 08:01 arm-linux-sprite -> arm-none-linux-gnueabi-sprite lrwxrwxrwx 1 root root 30 Sep 9 08:01 arm-linux-strings -> arm-none-linux-gnueabi-strings lrwxrwxrwx 1 root root 28 Sep 9 08:01 arm-linux-strip -> arm-none-linux-gnueabi-strip -rwxr-xr-x 1 root root 547548 Oct 16 2009 arm-none-linux-gnueabi-addr2line -rwxr-xr-x 2 root root 572276 Oct 16 2009 arm-none-linux-gnueabi-ar -rwxr-xr-x 2 root root 954556 Oct 16 2009 arm-none-linux-gnueabi-as -rwxr-xr-x 2 root root 210380 Oct 16 2009 arm-none-linux-gnueabi-c++ -rwxr-xr-x 1 root root 547324 Oct 16 2009 arm-none-linux-gnueabi-c++filt -rwxr-xr-x 1 root root 209228 Oct 16 2009 arm-none-linux-gnueabi-cpp -rwxr-xr-x 2 root root 210380 Oct 16 2009 arm-none-linux-gnueabi-g++ -rwxr-xr-x 2 root root 207948 Oct 16 2009 arm-none-linux-gnueabi-gcc -rwxr-xr-x 2 root root 207948 Oct 16 2009 arm-none-linux-gnueabi-gcc-4.4.1 -rwxr-xr-x 1 root root 26760 Oct 16 2009 arm-none-linux-gnueabi-gcov -rwxr-xr-x 1 root root 2840960 Oct 16 2009 arm-none-linux-gnueabi-gdb -rwxr-xr-x 1 root root 2840960 Oct 16 2009 arm-none-linux-gnueabi-gdbtui -rwxr-xr-x 1 root root 607456 Oct 16 2009 arm-none-linux-gnueabi-gprof -rwxr-xr-x 2 root root 959396 Oct 16 2009 arm-none-linux-gnueabi-ld -rwxr-xr-x 2 root root 556092 Oct 16 2009 arm-none-linux-gnueabi-nm -rwxr-xr-x 2 root root 705268 Oct 16 2009 arm-none-linux-gnueabi-objcopy -rwxr-xr-x 2 root root 836092 Oct 16 2009 arm-none-linux-gnueabi-objdump -rwxr-xr-x 2 root root 572308 Oct 16 2009 arm-none-linux-gnueabi-ranlib -rwxr-xr-x 1 root root 307848 Oct 16 2009 arm-none-linux-gnueabi-readelf -rwxr-xr-x 1 root root 551680 Oct 16 2009 arm-none-linux-gnueabi-size -rwxr-xr-x 1 root root 342540 Oct 16 2009 arm-none-linux-gnueabi-sprite -rwxr-xr-x 1 root root 547516 Oct 16 2009 arm-none-linux-gnueabi-strings -rwxr-xr-x 2 root root 705268 Oct 16 2009 arm-none-linux-gnueabi-strip -rwxr-xr-x 1 root root 1167 Sep 9 08:00 mk-arm-linux.sh root@ubuntu:/usr/local/arm/arm-2009q3/bin#
参考《朱老师.1.2ARM裸机课件》