部署交叉编译工具链

一. 安装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

[email protected]:/usr/local/arm# ls
arm-2009q3  arm-2009q3.tar.bz2
[email protected]:/usr/local/arm# 

  1.2. 测试交叉编译工具链

    1.2.1. ./arm-none-linux-gnueabi-gcc -v

[email protected]:/usr/local/arm# cd arm-2009q3
[email protected]:/usr/local/arm/arm-2009q3# cd bin/
[email protected]:/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)
[email protected]:/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. 查看导入后的环境变量

[email protected]:/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
[email protected]:/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. 创建后效果

[email protected]:/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
[email protected]:/usr/local/arm/arm-2009q3/bin# 

参考《朱老师.1.2ARM裸机课件》

原文地址:https://www.cnblogs.com/linux-37ge/p/10223131.html

时间: 2024-11-13 08:53:06

部署交叉编译工具链的相关文章

Linux下获取arm的交叉编译工具链

转载请注明文章:Linux下获取arm的交叉编译工具链 出处:多客博图 这里介绍,Linux下获取arm的交叉编译工具链,比如arm-linux-gnueabihf-gcc.arm-linux-gneabihf-gcc等. 前言 这里有一个专门的说法: “arm-linux-gnueabihf-gcc是由 Linaro 公司基于GCC推出的的ARM交叉编译工具.可用于交叉编译ARM系统中所有环节的代码,包括裸机程序.u-boot.Linux kernel.filesystem和App应用程序.使

ARM交叉编译工具链分类说明

转载整理自:http://www.veryarm.com/cross-tools 从授权上,ARM交叉编译工具链分为免费授权版和付费授权版. 免费版目前有三大主流工具商提供,第一是GNU(提供源码,自行编译制作),第二是 Codesourcery,第三是Linora. 收费版有ARM原厂提供的armcc.IAR提供的编译器等等,因为这些价格都比较昂贵,不适合学习用户使用,所以不做讲述. ·        arm-none-linux-gnueabi-gcc:是 Codesourcery 公司(目

64位的ubuntu14.04 LTS安装 Linux交叉编译工具链及32位“ia32-libs”依赖库

ubuntu又迎来了其新一代的长期支持版本 14.04 LTS,其带来了许多令人期待的新特新,遂决定进行升级. 装好了64位版本及安装 Linux交叉编译工具链 运行GCC,${CROSS_COMPILE}gcc -v 依然会提示那经典的“没有那个文件或目录”提示. 根据以往的经验,对于64位版本ubuntu我们需要安装“ia32-libs”依赖库. 遂输入: sudo apt-get install ia32-lib 却提示查无此货? ubuntu 14.04强制安装ia32-libs 参考u

Android开发实践:Android交叉编译工具链的使用

前面2篇文章分别介绍了Android NDK编译的命令行参数,以及如何在任意目录使用Android.mk来编译本地c/c++代码,Andriod.mk和ndk-build只不过是Android官方提供了一套封装过的Android交叉编译环境而已,其实,你可以不用它,而直接通过传统的Makefile文件来编译你的c/c++代码的,本文即介绍如何直接通过传统的Makefile文件来编译可用于Android平台的库文件. 经常搞嵌入式开发的朋友对于交叉编译环境应该并不陌生,说白了,就是一组运行在x86

交叉编译工具链

1.嵌入式开发模型-交叉开发 在嵌入式开发过程中有宿主机和目标机的角色之分:宿主机是执行编译.链接嵌入式软件的计算机:目标机是运行嵌入式软件的硬件平台. 在宿主机执行编译的流程如下: 2.交叉编译工具链详解 参考: http://www.crifan.com/files/doc/docbook/cross_compile/release/html/cross_compile.html 3.制作交叉编译工具 参考: http://www.crifan.com/files/doc/docbook/c

arm嵌入式交叉编译工具链

1.arm-linux-gcc 常用的参数:-o[制定输出文件名] -c[只到编译停止,不连接] -g[键入调试信息] -xO[优化级别] -w/W(警告等级) arm-linux-gcc -o dest source,直接编译出可执行文件elf格式 arm-linux-gcc -o dest source -c 只编译不连接,生成.o格式的库文件,用来提供给连接器连接成elf 其他的参数可以在GCC的手册中了解所有信息. 2.arm-linux-ld 如果GCC中使用的-c,需要arm-lin

【转】ARM交叉编译工具链

原文网址:http://www.veryarm.com/cross-tools 为什么要用交叉编译器? 交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序,比如在PC平台(X86 CPU)上编译出能运行在以ARM为内核的CPU平台上的程序,编译得到的程序在X86 CPU平台上是不能运行的,必须放到ARM CPU平台上才能运行,虽然两个平台用的都是Linux系统. 交叉编译工具链是一个由编译器.连接器和解释器组成的综合开发环境,交叉编译工具链主要由binutils.gc

树莓派学习笔记——交叉编译工具链

0.前言 [1]为什么要使用交叉编译 交叉编译工具较快开发的速度.树莓派中已经安装了gcc工具链,可在树莓派中直接编译源代码生成可执行文件.于此同时,PC机上也可使用gcc工具链生成可执行代码,但是和树莓派上的gcc工具不同,PC机上的gcc工具生成intel或amd芯片上可执行的代码,但树莓派却是arm系列的芯片,显然存在不小的差异.那么使用交叉工具链便可在PC机上开发树莓派中可执行程序. 虽然树莓派的主频可达700MHz远高于一般的嵌入式系统,但相比于PC机其性能还是差些,使用交叉工具链可节

ubuntu下编译交叉编译工具链

交叉编译工具链在arm开发中出很重要的位置,开发之前肯定要先有编译器 连接器 汇编器等基础的编译工具.arm体系是一个很复杂的体系,里面的指令有数个版本不同的体系level还有很多自己的特点 ,这就要求编译器也要出几个版本的针对不同的应用. 当然网络上存在很多的编译器的资源,但是作为一个嵌入式开发人员还是要会自己构建出来一个工具链的,做到只能说不想做,不能说做不到,不然真的遇到特殊应用的需要无法作出编译器项目就直接挂了. 整个工具链的编译过程如果采用纯手工的step by step  真的需要几