创建飞腾CPU的交叉编译环境
本文主要描述了
- 从开源社区下载源代码软件包
- 在x86平台上创建飞腾CPU交叉编译环境
- 利用交叉编译环境编译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. 基本流程
- 工程准备工作,包括创建基本目录、拷贝源代码、配置环境变量。
- 编译和安装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/gmp
- linux
tar xf ./linux-4.19.149.tar.xz
- 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.注意事项
- 配置和编译不要直接在源代码中进行,最好另外创建build目录。
- 所有过程不要用root用户,而用普通用户来操作。除非x86平台上的操作系统本身缺少相应的软件包,需要安装。
- 以上创建的交叉编译环境,仅仅可以针对glibc基础库的应用程序进行编译;如果需要C++库、多线程库的支持,还需要额外进行相应库的工作。
创建飞腾CPU的交叉编译环境相关推荐
- 银河麒麟V10系统+飞腾CPU交叉编译安装Qt-5.15.2
银河麒麟V10系统+飞腾CPU编译安装Qt-5.15.2 一.准备工作 1.下载qt源码包 下载网址:https://download.qt.io/archive/qt/ 在任意空闲位置新建文件夹,并 ...
- 飞腾交叉编译环境搭建之交叉编译工具链配置
1 概括 本文档适用于国产飞腾平台FT-2000/4 (D2000). u-boot.uefi.kernel代码编译,重点指导交叉编译环境的搭建方法,对系统安装不做介绍. Ubuntu系统(版本为ub ...
- 在x86_64平台搭建飞腾ARM交叉编译环境
下载ARM交叉编译器 ARM交叉编译器下载地址 交叉编译环境说明 系统: deepin V20 处理器平台: x86_64 交叉编译器: gcc-linaro-4.9.4-2017.01-x86_64 ...
- 银河麒麟V10系统+飞腾CPU编译安装Qt-5.15.2
银河麒麟V10系统+飞腾CPU编译安装Qt-5.15.2 一.准备工作 1.下载qt源码包 下载网址:https://download.qt.io/archive/qt/ 在任意空闲位置新建文件夹,并 ...
- Ubuntu12.04下arm交叉编译环境的建立
http://blog.csdn.net/heyangya2009/article/details/5424376 备注:ubuntu12.04+Android+Real6410 在主机上用来编译其他 ...
- linux安装交叉编译环境
(一)交叉编译器的简介 (1)本地编译 在了解交叉编译之前我们首先介绍一下另一个概念:本地编译 之前所做的C开发属于本地编译,即在当前PC下(x86的CPU下),直接编译出可以运行的程序(或者库文件) ...
- codeSourcery 交叉编译环境搭建
1.arm-none-linux-gnueabi-gcc下载 http://www.veryarm.com/arm-none-linux-gnueabi-gcc arm-none-linux-gnue ...
- 飞腾CPU BIOS固件生成教程
PDF版本下载链接: (20条消息) 飞腾CPUBIOS固件生成教程[公开].pdf-嵌入式文档类资源-CSDN文库https://download.csdn.net/download/u013183 ...
- 龙芯LS1B Ubuntu交叉编译环境的建立,mipsel
源码包位置:Loongson_1B/Tools/toolchain/gcc-3.4.6-2f.tgz (1)在Windows上把gcc-3.4.6-2f.tgz 复制到共享目录"E:\Ubu ...
最新文章
- Spring框架简介
- Python编程基础:第四十二节 多重继承Multi Level Inheritance
- win7冒险岛java,win7玩冒险岛不兼容怎么办?解决win7玩冒险岛不兼容的方法
- 《构建实时机器学习系统》一1.8 实时机器学习模型的生存期
- 大神干货:腾讯广告算法大赛亚军女极客生存图鉴
- 摩擦力特点用计算机绘制出,AGC液压缸模拟工况摩擦力特性测试方法研究
- 【codevs1077】多源最短路
- 空军军医大学计算机复试线,2021空军军医大学考研国家线公布时间_国家线是多少分...
- python出现syntaxerror_python 报错syntaxerror怎么解决
- ubuntu镜像安装教程
- 下一个冷链独角兽:C轮融资后,九曳供应链如何撬动生鲜市场?
- JAVA:实现PigeonholeSort鸽巢排序算法(附完整源码)
- 鸡先还是蛋先,当然有答案
- 基于Java实现的商品推荐系统
- 韩信点兵--中国剩余定理
- ssh登录极路由后台_各品牌路由器登录网址大全 路由器默认用户名/密码
- HM编码器代码阅读(5)——参考帧的选择
- 博文视点名家讲坛之七经典对答回顾
- 启动kafka无反应_kafka consumer无法正常启动原因调查
- 局域网安装第二台域控制器,互为冗余
热门文章
- 基站|WIFI|LBS定位|经纬度|查询|API接口
- 用JavaScript编写网页计算器
- 三角函数π/2转化_数学一轮复习20,同角三角函数基本关系式与诱导公式
- 【C++常用函数】取绝对值abs()
- 双目立体视觉笔记(二)
- 【 python 中 if 的用法(if else, if not, elif)】
- vue,vue3仿app输入手机验证码功能
- 查看电脑的使用记录,真干货!
- NUC972 Linux学习 NAND FLASH 制作系统
- 通过Matlab分析语音信号的时频特性