交叉编译GCC for arm

本文详细介绍了如何在Build Platform上手动交叉编译GCC,目标平台为arm-none-linux-gnueabi。首先,文章明确了编译工具链中的三个关键概念:Build Platform、Host Platform和Target Platform。然后,按照步骤依次讲解了指定环境、下载源码、编译binutils、构建Linux头文件、首次编译GCC、编译glibc以及二次编译GCC的过程。最终,完成交叉编译工具链和glibc的安装,并提示可通过qemu验证编译成果。
摘要由CSDN通过智能技术生成

之前被同学问了一个开发版上编译程序依赖的问题,对这方面不是很熟悉,回去之后又重新查了挺久,总之这是个如何用gcc编译交叉工具链的问题.
一般官方会提供好可以使用的整套编译工具链,但是如果需要编译交叉编译用的gcc,需要知道三个概念:

Build Platform: This is the platform on which the compilation tools are executed.
Host Platform: This is the platform on which the code will eventually run.
Target Platform: If this is a compiler, this is the platform that the compiler will generate code for.

Build Platform:简单来说就是编译gcc的系统
Host Platform: 执行gcc来编译生成跨平台程序的平台
Target Platform: 执行编译的程序的平台

总的来说gcc也是一个软件,也需要用编译工具编译生成,当然也是使用gcc编译的.(当然第一个gcc肯定不是.

那么进入正题开始编译,这次编译的target_arch是arm-none-linux-gnueabi.
这四个字段的意思是:

arch[-vendor]-os[-abi]
arch is for architecture: arm, mips, x86, i686…
vendor is tool chain supplier: apple,
os is for operating system: linux, none (bare metal)
abi is for application binary interface convention: eabi, gnueabi, gnueabihf

目标是得到交叉编译使用的gcc编译工具链以及对应的glibc库。

1.指定环境

为了不扰乱现有的环境而不使用系统目录变量

export SRC_DIR=/root/cross/src
export BUILD_DIR=/root/cross/build
export INSTALL_DIR=/root/cross/arm
export SYSROOT_DIR=$INSTALL_DIR/sysroot
export BINUTIL_SRC=$SRC_DIR/binutils-2.28
export KERNEL_SRC=$SRC_DIR/linux-4.12.2 
export GCC_SRC=$SRC_DIR/gcc-5.4.0
export GLIBC_SRC=$SRC_DIR/glibc-2.25 
export TARGET_MACH=arm-none-linux-gnueabi
export BUILD_MACH=$(gcc -dumpmachine)
export LINUX_ARCH=arm

2.Download

mkdir -p $SRC_DIR
cd $SRC_DIR

3.编译binutil

cd $BINUTILS_SRC
./configure --prefix=$INSTALL_DIR --build=$BUILD_MACH --target=$TARGET_MACH --with-sysroot=$SYSROOT_DIR --disable-werror
cd $BINUTIL_SRC
make -j4
make install 

3.编译linux头文件

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值