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

    科技2022-08-27  104

    本文主要描述了

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

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

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

    1. 源代码

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

    2. 基本流程

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

    3. 工程准备工作

    定义环境变量 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

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

    源代码工作

    binutils tar xf ./binutils-2.35.tar.xz mkdir -v ./binutils-2.35/build 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/gmplinux tar xf ./linux-4.19.149.tar.xzglibc 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.注意事项

    配置和编译不要直接在源代码中进行,最好另外创建build目录。所有过程不要用root用户,而用普通用户来操作。除非x86平台上的操作系统本身缺少相应的软件包,需要安装。以上创建的交叉编译环境,仅仅可以针对glibc基础库的应用程序进行编译;如果需要C++库、多线程库的支持,还需要额外进行相应库的工作。
    Processed: 0.022, SQL: 9