交叉编译环境的安装

简介: 交叉编译环境的安装

什么是交叉编译

我们在Linux中使用自带的gcc和g++编译器进行编译的程序是针对X86架构的。而我们开发板大多都是ARM或者其他架构的开发板,我们就需要编译出针对其他架构的程序。

那么究竟什么是交叉编译呢?

其实就是在我们的PC(X86)上编译出其他平台上的代码,就称它为交叉编译。

想编译出在其它平台上可执行的程序,就需要使用不同的编译器,因为不同的编译器有不同的指令集等。

关于

交叉编译器有很多,我们本次采用linaro公司提供的一个交叉编译工具。

地址:http://releases.linaro.org/

直达地址:

http://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabi/

1、下载好之后进行解压:

tar -xvf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi.tar.xz

2、把解压后的整个目录拷贝到自己想要存放的地方

我就放在了我统一管理的地方

mv gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi ~/soft/linux_tools/
zh@zh-lpc:~/soft/linux_tools$ pwd
/home/zh/soft/linux_tools
zh@zh-lpc:~/soft/linux_tools$ ls
gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi
zh@zh-lpc:~/soft/linux_tools$

3、测试是否可以运行

进入到bin目录后,执行./arm-linux-gnueabi-gcc -v 查看版本信息。如果成功了,说明可以了。

zh@zh-lpc:~/soft/linux_tools$
zh@zh-lpc:~/soft/linux_tools$ cd gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/
zh@zh-lpc:~/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi$ cd bin/
zh@zh-lpc:~/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin$
zh@zh-lpc:~/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin$
zh@zh-lpc:~/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin$ pwd
/home/zh/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin
zh@zh-lpc:~/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin$ ls
arm-linux-gnueabi-addr2line  arm-linux-gnueabi-cpp        arm-linux-gnueabi-gcc-ar      arm-linux-gnueabi-gfortran  arm-linux-gnueabi-objcopy  arm-linux-gnueabi-strings
arm-linux-gnueabi-ar         arm-linux-gnueabi-elfedit    arm-linux-gnueabi-gcc-nm      arm-linux-gnueabi-gprof     arm-linux-gnueabi-objdump  arm-linux-gnueabi-strip
arm-linux-gnueabi-as         arm-linux-gnueabi-g++        arm-linux-gnueabi-gcc-ranlib  arm-linux-gnueabi-ld        arm-linux-gnueabi-ranlib   gdbserver
arm-linux-gnueabi-c++        arm-linux-gnueabi-gcc        arm-linux-gnueabi-gcov        arm-linux-gnueabi-ld.bfd    arm-linux-gnueabi-readelf  runtest
arm-linux-gnueabi-c++filt    arm-linux-gnueabi-gcc-4.9.4  arm-linux-gnueabi-gdb         arm-linux-gnueabi-nm        arm-linux-gnueabi-size
zh@zh-lpc:~/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin$
zh@zh-lpc:~/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin$ ./arm-linux-gnueabi-gcc -v
使用内建 specs。
COLLECT_GCC=./arm-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/home/zh/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/../libexec/gcc/arm-linux-gnueabi/4.9.4/lto-wrapper
目标:arm-linux-gnueabi
配置为:/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/snapshots/gcc-linaro-4.9-2017.01/configure SHELL=/bin/bash --with-mpc=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu --with-mpfr=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gmp=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gnu-as --with-gnu-ld --disable-libmudflap --enable-lto --enable-objc-gc --enable-shared --without-included-gettext --enable-nls --disable-sjlj-exceptions --enable-gnu-unique-object --enable-linker-build-id --disable-libstdcxx-pch --enable-c99 --enable-clocale=gnu --enable-libstdcxx-debug --enable-long-long --with-cloog=no --with-ppl=no --with-isl=no --disable-multilib --with-float=soft --with-mode=thumb --with-tune=cortex-a9 --with-arch=armv7-a --with-fpu=vfpv3-d16 --enable-threads=posix --enable-multiarch --enable-libstdcxx-time=yes --with-build-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/sysroots/arm-linux-gnueabi --with-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu/arm-linux-gnueabi/libc --enable-checking=release --disable-bootstrap --enable-languages=c,c++,fortran,lto --build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu --target=arm-linux-gnueabi --prefix=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu
线程模型:posix
gcc 版本 4.9.4 (Linaro GCC 4.9-2017.01)
zh@zh-lpc:~/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin$

4、配置环境变量

如果想直接像系统自带的gcc命令这样随处可以执行的话,就需要配置环境变量。

4-1、记住如下目录

/home/zh/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin

zh@zh-lpc:~/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin$ pwd
/home/zh/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin
zh@zh-lpc:~/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin$

4-2、打开配置文件

我们可以选择给系统中的所有用户配置,那么就打开:/etc/profile

如果想给某个特定用户配置,可以打开用户目录下的:

vim ~/.profile
vim ~/.bashrc

等等,都是可以的。

打开:

zh@zh-lpc:~$ vim ~/.bashrc
zh@zh-lpc:~$

加入:

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
export PATH=$PATH:/home/zh/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin

让其生效:

zh@zh-lpc:~$ source ~/.bashrc
zh@zh-lpc:~$

测试:

zh@zh-lpc:~$
zh@zh-lpc:~$ arm-linux-gnueabi
arm-linux-gnueabi-addr2line     arm-linux-gnueabi-gcc-ar        arm-linux-gnueabihf-c++         arm-linux-gnueabihf-gcc-ranlib  arm-linux-gnueabihf-objcopy     arm-linux-gnueabi-objcopy
arm-linux-gnueabi-ar            arm-linux-gnueabi-gcc-nm        arm-linux-gnueabihf-c++filt     arm-linux-gnueabihf-gcov        arm-linux-gnueabihf-objdump     arm-linux-gnueabi-objdump
arm-linux-gnueabi-as            arm-linux-gnueabi-gcc-ranlib    arm-linux-gnueabihf-cpp         arm-linux-gnueabihf-gcov-tool   arm-linux-gnueabihf-ranlib      arm-linux-gnueabi-ranlib
arm-linux-gnueabi-c++           arm-linux-gnueabi-gcov          arm-linux-gnueabihf-dwp         arm-linux-gnueabihf-gdb         arm-linux-gnueabihf-readelf     arm-linux-gnueabi-readelf
arm-linux-gnueabi-c++filt       arm-linux-gnueabi-gdb           arm-linux-gnueabihf-elfedit     arm-linux-gnueabihf-gfortran    arm-linux-gnueabihf-size        arm-linux-gnueabi-size
arm-linux-gnueabi-cpp           arm-linux-gnueabi-gfortran      arm-linux-gnueabihf-g++         arm-linux-gnueabihf-gprof       arm-linux-gnueabihf-strings     arm-linux-gnueabi-strings
arm-linux-gnueabi-elfedit       arm-linux-gnueabi-gprof         arm-linux-gnueabihf-gcc         arm-linux-gnueabihf-ld          arm-linux-gnueabihf-strip       arm-linux-gnueabi-strip
arm-linux-gnueabi-g++           arm-linux-gnueabihf-addr2line   arm-linux-gnueabihf-gcc-6.2.1   arm-linux-gnueabihf-ld.bfd      arm-linux-gnueabi-ld
arm-linux-gnueabi-gcc           arm-linux-gnueabihf-ar          arm-linux-gnueabihf-gcc-ar      arm-linux-gnueabihf-ld.gold     arm-linux-gnueabi-ld.bfd
arm-linux-gnueabi-gcc-4.9.4     arm-linux-gnueabihf-as          arm-linux-gnueabihf-gcc-nm      arm-linux-gnueabihf-nm          arm-linux-gnueabi-nm
zh@zh-lpc:~$ arm-linux-gnueabi-gcc -v
使用内建 specs。
COLLECT_GCC=arm-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/home/zh/soft/linux_tools/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/../libexec/gcc/arm-linux-gnueabi/4.9.4/lto-wrapper
目标:arm-linux-gnueabi
配置为:/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/snapshots/gcc-linaro-4.9-2017.01/configure SHELL=/bin/bash --with-mpc=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu --with-mpfr=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gmp=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gnu-as --with-gnu-ld --disable-libmudflap --enable-lto --enable-objc-gc --enable-shared --without-included-gettext --enable-nls --disable-sjlj-exceptions --enable-gnu-unique-object --enable-linker-build-id --disable-libstdcxx-pch --enable-c99 --enable-clocale=gnu --enable-libstdcxx-debug --enable-long-long --with-cloog=no --with-ppl=no --with-isl=no --disable-multilib --with-float=soft --with-mode=thumb --with-tune=cortex-a9 --with-arch=armv7-a --with-fpu=vfpv3-d16 --enable-threads=posix --enable-multiarch --enable-libstdcxx-time=yes --with-build-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/sysroots/arm-linux-gnueabi --with-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu/arm-linux-gnueabi/libc --enable-checking=release --disable-bootstrap --enable-languages=c,c++,fortran,lto --build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu --target=arm-linux-gnueabi --prefix=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu
线程模型:posix
gcc 版本 4.9.4 (Linaro GCC 4.9-2017.01)
zh@zh-lpc:~$

那么配置其他版本的也是如此。

目录
相关文章
|
7月前
|
Ubuntu Linux Python
Linux(15)Ubuntu安装ninja构建工具
Linux(15)Ubuntu安装ninja构建工具
1083 0
|
7月前
|
Linux 开发者
交叉编译工具链的下载与安装
交叉编译工具链的下载与安装
1027 1
|
IDE Unix Linux
Linux环境基础开发工具使用(yum软件安装工具的使用、vim编辑器使用及握gcc/g++编译器的使用等上)
在之前我配置环境那篇博客我写到的换国内的阿里源,就是指的yum源,如果我们使用默认国外的源,可能会出现连不上,或者网速极慢的情况
|
NoSQL IDE Unix
Linux开发工具大全 - 软件包管理器yum | vim编辑器 | gcc/g++编译器 | 自动化构建工具Make/Makefile | gdb调试工具(2)
Linux开发工具大全 - 软件包管理器yum | vim编辑器 | gcc/g++编译器 | 自动化构建工具Make/Makefile | gdb调试工具(2)
176 0
|
7月前
|
Ubuntu 编译器 Linux
交叉编译工具链安装
交叉编译工具链安装
274 0
|
Linux 开发工具 C语言
Linux基础环境开发工具的使用(二):动静态库的理解,make,makefile(上)
Linux基础环境开发工具的使用(二):动静态库的理解,make,makefile
|
Linux 开发工具 C++
Linux基础环境开发工具的使用(二):动静态库的理解,make,makefile(下)
Linux基础环境开发工具的使用(二):动静态库的理解,make,makefile
|
NoSQL Ubuntu IDE
Linux开发工具大全 - 软件包管理器yum | vim编辑器 | gcc/g++编译器 | 自动化构建工具Make/Makefile | gdb调试工具(1)
Linux开发工具大全 - 软件包管理器yum | vim编辑器 | gcc/g++编译器 | 自动化构建工具Make/Makefile | gdb调试工具(1)
227 0
|
XML Java 编译器
Android编译器及编译工具之编译工具
Apache Ant 是由 Java 语言开发的工具,由 Apache 软件基金会所提供。Ant 是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。Apache Ant 的配置文件写成 XML 容易维护和书写,而且结构很清晰。
406 0
下一篇
DataWorks