本文主要描述了

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

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

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

1. 源代码

源代码名称 下载网址 下载版本
Linux kernel https://www.kernel.org linux-4.19.149.tar.xz
gnu binutils ftp://ftp.gnu.org/gnu/binutils/ binutils-2.35.tar.xz
gnu gcc ftp://ftp.gnu.org/gnu/gcc/ gcc-10.2.0.tar.xz
gnu glibc ftp://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++库、多线程库的支持,还需要额外进行相应库的工作。

创建飞腾CPU的交叉编译环境相关推荐

  1. 银河麒麟V10系统+飞腾CPU交叉编译安装Qt-5.15.2

    银河麒麟V10系统+飞腾CPU编译安装Qt-5.15.2 一.准备工作 1.下载qt源码包 下载网址:https://download.qt.io/archive/qt/ 在任意空闲位置新建文件夹,并 ...

  2. 飞腾交叉编译环境搭建之交叉编译工具链配置

    1 概括 本文档适用于国产飞腾平台FT-2000/4 (D2000). u-boot.uefi.kernel代码编译,重点指导交叉编译环境的搭建方法,对系统安装不做介绍. Ubuntu系统(版本为ub ...

  3. 在x86_64平台搭建飞腾ARM交叉编译环境

    下载ARM交叉编译器 ARM交叉编译器下载地址 交叉编译环境说明 系统: deepin V20 处理器平台: x86_64 交叉编译器: gcc-linaro-4.9.4-2017.01-x86_64 ...

  4. 银河麒麟V10系统+飞腾CPU编译安装Qt-5.15.2

    银河麒麟V10系统+飞腾CPU编译安装Qt-5.15.2 一.准备工作 1.下载qt源码包 下载网址:https://download.qt.io/archive/qt/ 在任意空闲位置新建文件夹,并 ...

  5. Ubuntu12.04下arm交叉编译环境的建立

    http://blog.csdn.net/heyangya2009/article/details/5424376 备注:ubuntu12.04+Android+Real6410 在主机上用来编译其他 ...

  6. linux安装交叉编译环境

    (一)交叉编译器的简介 (1)本地编译 在了解交叉编译之前我们首先介绍一下另一个概念:本地编译 之前所做的C开发属于本地编译,即在当前PC下(x86的CPU下),直接编译出可以运行的程序(或者库文件) ...

  7. codeSourcery 交叉编译环境搭建

    1.arm-none-linux-gnueabi-gcc下载 http://www.veryarm.com/arm-none-linux-gnueabi-gcc arm-none-linux-gnue ...

  8. 飞腾CPU BIOS固件生成教程

    PDF版本下载链接: (20条消息) 飞腾CPUBIOS固件生成教程[公开].pdf-嵌入式文档类资源-CSDN文库https://download.csdn.net/download/u013183 ...

  9. 龙芯LS1B Ubuntu交叉编译环境的建立,mipsel

    源码包位置:Loongson_1B/Tools/toolchain/gcc-3.4.6-2f.tgz (1)在Windows上把gcc-3.4.6-2f.tgz 复制到共享目录"E:\Ubu ...

最新文章

  1. Spring框架简介
  2. Python编程基础:第四十二节 多重继承Multi Level Inheritance
  3. win7冒险岛java,win7玩冒险岛不兼容怎么办?解决win7玩冒险岛不兼容的方法
  4. 《构建实时机器学习系统》一1.8 实时机器学习模型的生存期
  5. 大神干货:腾讯广告算法大赛亚军女极客生存图鉴
  6. 摩擦力特点用计算机绘制出,AGC液压缸模拟工况摩擦力特性测试方法研究
  7. 【codevs1077】多源最短路
  8. 空军军医大学计算机复试线,2021空军军医大学考研国家线公布时间_国家线是多少分...
  9. python出现syntaxerror_python 报错syntaxerror怎么解决
  10. ubuntu镜像安装教程
  11. 下一个冷链独角兽:C轮融资后,九曳供应链如何撬动生鲜市场?
  12. JAVA:实现PigeonholeSort鸽巢排序算法(附完整源码)
  13. 鸡先还是蛋先,当然有答案
  14. 基于Java实现的商品推荐系统
  15. 韩信点兵--中国剩余定理
  16. ssh登录极路由后台_各品牌路由器登录网址大全 路由器默认用户名/密码
  17. HM编码器代码阅读(5)——参考帧的选择
  18. 博文视点名家讲坛之七经典对答回顾
  19. 启动kafka无反应_kafka consumer无法正常启动原因调查
  20. 局域网安装第二台域控制器,互为冗余

热门文章

  1. 基站|WIFI|LBS定位|经纬度|查询|API接口
  2. 用JavaScript编写网页计算器
  3. 三角函数π/2转化_数学一轮复习20,同角三角函数基本关系式与诱导公式
  4. 【C++常用函数】取绝对值abs()
  5. 双目立体视觉笔记(二)
  6. 【 python 中 if 的用法(if else, if not, elif)】
  7. vue,vue3仿app输入手机验证码功能
  8. 查看电脑的使用记录,真干货!
  9. NUC972 Linux学习 NAND FLASH 制作系统
  10. 通过Matlab分析语音信号的时频特性