创建飞腾CPU的交叉编译环境

本文主要描述了

  1. 从开源社区下载源代码软件包
  2. 在x86平台上创建飞腾CPU交叉编译环境
  3. 利用交叉编译环境编译FT2000+/64服务器的内核

Host主机平台:x86_64
Target目标平台:飞腾CPU

在x86_64上利用交叉编译环境配置、编译一个dummy.c程序

1. 源代码

源代码名称下载网址下载版本
Linux kernelhttps://www.kernel.orglinux-4.19.149.tar.xz
gnu binutilsftp://ftp.gnu.org/gnu/binutils/binutils-2.35.tar.xz
gnu gccftp://ftp.gnu.org/gnu/gcc/gcc-10.2.0.tar.xz
gnu glibcftp://ftp.gnu.org/gnu/glibc/glibc-2.32.tar.xz

2. 基本流程

  1. 工程准备工作,包括创建基本目录、拷贝源代码、配置环境变量。
  2. 编译和安装binutils工具
  3. 编译和安装一个不完整的gcc
  4. 生成和安装内核头部文件
  5. 编译和安装glibc
  6. 编译和安装一个完整的gcc

3. 工程准备工作

  1. 定义环境变量
    ROOT=pwd
    export PREFIX=$ROOT/project
    export HDR_PATH=$PREFIX/usr
    export TARGET=aarch64-linux
    export TARGET_PREFIX=$PREFIX/$TARGET
    export PATH=$PREFIX/bin:$PATH

  2. 创建基本目录
    mkdir -v $PREFIX
    mkdir -v $HDR_PATH

  3. 源代码工作

  1. binutils
    tar xf ./binutils-2.35.tar.xz
    mkdir -v ./binutils-2.35/build
  1. gcc
    tar xf ./gcc-10.2.0.tar.xz
    mkdir -v ./gcc-10.2.0/build
    sed -e '/m64=/s/lib64/lib/' -i.orig ./gcc-10.2.0/gcc/config/i386/t-linux64
    tar xf ./mpfr-3.1.4.tar.bz2
    mv ./mpfr-3.1.4 ./gcc-10.2.0/mpfr
    tar xf ./mpc-1.0.3.tar.gz
    mv ./mpc-1.0.3 ./gcc-10.2.0/mpc
    tar xf ./gmp-6.1.0.tar.bz2
    mv ./gmp-6.1.0 ./gcc-10.2.0/gmp
  2. linux
    tar xf ./linux-4.19.149.tar.xz
  3. glibc
    tar xf ./glibc-2.32.tar.xz
    mkdir -v ./glibc-2.32/build

4. 编译和安装binutils工具

../configure --prefix=$PREFIX \
--with-sysroot=$PREFIX \
--target=$TARGET \
--disable-nls \
--disable-werror
make -j 4
make install

5. 编译和安装一个不完整的GCC

../configure --target=$TARGET \
--prefix=$PREFIX \
--with-glibc-version=2.32 \
--with-sysroot=$PREFIX \
--with-newlib \
--without-headers \
--enable-initfini-array \
--disable-nls \
--disable-shared \
--disable-multilib \
--disable-decimal-float \
--disable-threads \
--disable-libatomic \
--disable-libgomp \
--disable-libquadmath \
--disable-libssp \
--disable-libvtv \
--disable-libstdcxx \
--enable-languages=c,c++

make -j 4
make install
cat ../gcc/limitx.h ../gcc/glimits.h ../gcc/limity.h > $PREFIX/lib/gcc/aarch64-linux/10.2.0/install-tools/include/limits.h

6. 生成和安装内核头部文件

make mrproper
make ARCH=arm64 INSTALL_HDR_PATH=$HDR_PATH headers_install

7. 编译和安装glibc

../configure --prefix=/usr \
--host=$TARGET \
--with-sysroot=$PREFIX \
--build=$(../scripts/config.guess) \
--enable-kernel=4.19 \
--with-headers=$HDR_PATH/include \
libc_cv_slibdir=/lib

make
make DESTDIR=$PREFIX install

8.验证上述过程

建立一个最简单的c语言程序dummy.c
int main() { }
用交叉编译命令aarch64-linux-gcc dummy.c来验证
如果发生错误请用aarch64-linux-gcc -v dummy.c来查找问题

9.注意事项

  1. 配置和编译不要直接在源代码中进行,最好另外创建build目录。
  2. 所有过程不要用root用户,而用普通用户来操作。除非x86平台上的操作系统本身缺少相应的软件包,需要安装。
  3. 以上创建的交叉编译环境,仅仅可以针对glibc基础库的应用程序进行编译;如果需要C++库、多线程库的支持,还需要额外进行相应库的工作。
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值