Ubuntu22.04 交叉编译GCC13.2.0 for Rv1126

news2024/10/6 22:27:58

一、安装Ubuntu22.04 

sudo apt install vim net-tools openssh-server

二、安装必要项

sudo apt update
sudo apt upgrade
sudo apt install build-essential gawk git texinfo bison flex

三、下载必备软件包

1.glibc

https://ftp.gnu.org/gnu/glibc/glibc-2.38.tar.gz

 2.gcc

https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.gz

3.binutils

 https://ftp.gnu.org/gnu/binutils/binutils-2.41.tar.xz

4.Linux kernel

https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-6.6.tar.gz

下载完成后存在在/opt目录下

四、在/opt目录下创建编译文件夹,且解压文件

mkdir build-gcc
mkdir build-glibc
mkdir build-utils
mkdir packet #gcc 打包目录

 

五、下载gcc依赖包

cd /opt/gcc-13.2.0/
./contrib/download_prerequisites

这里主要下载的是gmp、mpfr、mpc、isl等库

六、安装内核头文件

cd /opt/linux-6.6
make ARCH=arm INSTALL_HDR_PATH=/opt/packet/arm-linux-gnueabihf headers_install

rv1126 是32位的板子,故ARCH=arm,如需要64位的板子则:

make ARCH=arm64 INSTALL_HDR_PATH=/opt/packet/arm-linux-gnueabihf headers_install

七、编译binutils

cd /opt/build-utils
../binutils-2.41/configure --prefix=/opt/packet --target=arm-linux-gnueabihf --with-arch=armv7l --with-fpu=vfp --with-float=hard --disable-multilib
make
make install

rv1126的板子是armv7l, 故 --with-arch=armv7l

 

八、部分编译gcc

cd /opt/build-gcc
#../gcc-13.2.0/configure --prefix=/opt/packet --target=arm-linux-gnueabihf --enable-languages=c,c++,fortran  --with-fpu=vfp --with-float=hard --disable-multilib

../gcc-13.2.0/configure --prefix=/opt/packet --target=arm-linux-gnueabihf --enable-languages=c,c++ --with-fpu=vfp --with-float=hard --disable-multilib --enable-libstdcxx  --enable-libgm2 --enable-libssp  --enable-shared

make -j8 all-gcc
make install-gcc

九、部分编译glibc

cd /opt/build-glibc

export PATH=$PATH:/opt/packet/bin

../glibc-2.38/configure \
                        --prefix=/opt/packet/arm-linux-gnueabihf \
                        --build=$MACHTYPE \
                        --host=arm-linux-gnueabihf \
                        --target=arm-linux-gnueabihf \
                        --with-arch=armv7l \
                        --with-fpu=vfp \
                        --with-float=hard \
                        --with-headers=/opt/packet/arm-linux-gnueabihf/include \
                        --disable-multilib \
                        libc_cv_forced_unwind=yes

make install-bootstrap-headers=yes install-headers 

make -j8 csu/subdir_lib

install csu/crt1.o csu/crti.o csu/crtn.o /opt/packet/arm-linux-gnueabihf/lib

arm-linux-gnueabihf-gcc -nostdlib -nostartfiles -shared -x c /dev/null -o /opt/packet/arm-linux-gnueabihf/lib/libc.so

touch /opt/packet/arm-linux-gnueabihf/include/gnu/stubs.h

 

十、接着部分编译gcc

cd /opt/build-gcc
make -j8 all-target-libgcc
make install-target-libgcc

 

十一、全编译glibc 

cd /opt/build-glibc

export PATH=$PATH:/opt/packet/bin

make -j8

make install

十二、全编译gcc

cd /opt/build-gcc
make -j8 all-target-libgcc
make install-target-libgcc

查看文件

十三、测试

1.创建build.sh

#!/bin/bash

/opt/packet/bin/arm-linux-gnueabihf-g++ test.cpp -o ./test -lpthread

 2.创建test.cpp

#include <stdio.h>
#include <thread>
#include <mutex>
#include <unistd.h>
#include <vector>
#include <algorithm>
using namespace std;

std::mutex g_mutex;
std::vector<int>g_vData;

void process()
{
    int n = 0;
    while(true){
    	g_mutex.lock();
    	g_vData.push_back(n++);
    	g_mutex.unlock();
    }
}

void Process1()
{
	while(true){
		g_mutex.lock();
		if(g_vData.size() > 0){
			std::vector<int>::iterator iter = g_vData.begin();
			printf("%d\n", *iter);
			g_vData.erase(iter);
		}
	    	
	    	g_mutex.unlock();
	}
}


int main()
{
	printf("hello\n");
	std::thread* pthread = new std::thread(process);
	std::thread* pthread1 = new std::thread(Process1);
	sleep(-1);
	return 0;
}

3.执行

sudo chmod 777 ./build.sh
./build.sh

4.将test这个执行程序拷贝到arm板

十四、参考链接

aarch64-linux-gnu_交叉编译工具链_gcc-9.3.0-x86_64_arrch64-linux-gnu-CSDN博客

创建飞腾CPU的交叉编译环境_飞腾内核编译-CSDN博客

交叉编译生成可以在ARM64平台上运行的gcc_gdb arm64交叉编译-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1234374.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通明智云宣布完成数千万元A+轮融资, 引领云原生与信创两翼齐飞的应用交付解决方案

近日&#xff0c;通明智云&#xff08;北京&#xff09;科技有限公司&#xff08;简称&#xff1a;通明智云&#xff09;宣布完成数千万元A轮融资&#xff0c;由全聚合与信公投资联合投资&#xff0c;明论资本担任本轮融资独家财务顾问。本轮融资资金将主要用于NJet云原生应用引…

ky10 server x86 安装、更新openssl3.1.4(在线编译安装、离线安装)

查看openssl版本 openssl version 离线编译安装升级 #!/bin/shOPENSSLVER3.1.4OPENSSL_Vopenssl versionecho "当前OpenSSL 版本 ${OPENSSL_V}" #------------------------------------------------ #wget https://www.openssl.org/source/openssl-3.1.4.tar.gzech…

第四代可燃气体监测仪:可燃气体监测仪效果有哪些?

在城市之中一旦发生燃气事故&#xff0c;往往会为社会公共安全和公众利益带来极大的危害&#xff0c;扰乱社会运行的稳定秩序&#xff0c;威胁着城市生命线的运行。因此对于城市燃气事故的预防和应对工作&#xff0c;必须得到充分的重视和关注。城市燃气事故的预防工作&#xf…

redis高可用---持久化

redis高可用 在集群当中有一个非常重要的指标&#xff0c;提供正常服务的时间的百分比(365天) 99.9%&#xff0c;redis高可用含义更广泛&#xff0c;支持服务是指标之一&#xff0c;数据容量扩展&#xff0c;数局的安全性。&#xff08;容量、安全性&#xff09; redis中实现高…

竞赛 题目:基于深度学习的手势识别实现

文章目录 1 前言2 项目背景3 任务描述4 环境搭配5 项目实现5.1 准备数据5.2 构建网络5.3 开始训练5.4 模型评估 6 识别效果7 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的手势识别实现 该项目较为新颖&#xff0c;适合作为竞赛课题…

【设计模式】行为型设计模式

行为型设计模式 文章目录 行为型设计模式一、概述二、责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;三、命令模式&#xff08;Command Pattern&#xff09;四、解释器模式&#xff08;Interpreter Pattern&#xff09;五、迭代器模式&#xff08;Iterato…

YOLOV5 C++部署的人员检测项目【学习笔记(十一)】

本文为修改后的转载&#xff0c;没有转载链接&#xff0c;所以文章类型暂为原创 文章目录 一、安装Pytorch 及 YOLO v51.1 安装GPU版 pytorch1.2 安装YOLO v5所需依赖 二、YOLO v5训练自定义数据2.1 标注数据2.1.1 安装labelImg2.1.2 标注 2.2 准备数据集2.2.1 组织目录结构2.…

亚马逊运营一定要用动/静态住宅IP代理吗?

作为全球最大的电商平台之一&#xff0c;亚马逊已经成为许多商家的首选销售平台。而代理IP作为近几天互联网的热门工具&#xff0c;在跨境电商界也起着非常强大的作用。那么在亚马逊运营中&#xff0c;适合动态住宅代理还是静态住宅代理呢&#xff1f;下面我们一起来探索&#…

问题解决:ModuleNotFoundError: No module named ‘skimage‘

今天的代码中需要用到这个库 from skimage.morphology import disk import skimage.filters.rank as sfr 在运行程序时&#xff0c;出现报错&#xff1a; ModuleNotFoundError: No module named skimage 刚开始傻乎乎的使用 pip install skimage 指令&#xff0c;结果确实不…

深入了解Java 8 新特性:Stream流的实践应用(二)

阅读建议 嗨&#xff0c;伙计&#xff01;刷到这篇文章咱们就是有缘人&#xff0c;在阅读这篇文章前我有一些建议&#xff1a; 本篇文章大概8000多字&#xff0c;预计阅读时间长需要10分钟&#xff08;不要害怕字数过多&#xff0c;其中有一大部分是示例代码&#xff0c;读起…

HTML5+CSS3+JS小实例:Canvas图片滑块拖动验证码

实例:Canvas图片滑块拖动验证码 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" cont…

二十一、数组(3)

本章概要 Arrays的setAll方法增量生成 Arrays的setAll方法 在Java 8中&#xff0c; 在RaggedArray.java 中引入并在 ArrayOfGenerics.java.Array.setAll() 中重用。它使用一个生成器并生成不同的值&#xff0c;可以选择基于数组的索引元素&#xff08;通过访问当前索引&…

Android Serializable / Parcelable

Serializable 序列化,将对象转为二进制序列 Parcelable 不是序列化,属于进程间通信,不需要IO/操作,没有拷贝内存的操作, Object -> ShareMemory -> Object 不需要IO,使用内存共享等方式 Kotlin inline fun 内联函数 TCP协议将数据包拆分,进行发送,保证网络数据的可…

echarts折线图修改特定点的颜色

$.ajax({url:"/plc1672Ctrl/selectPage2.ctrl",dataType:"json",type:"POST",cache:false,data:{"serNo":$("#search").val().trim()},success:function(data){var list data.list;// x坐标var x new Array();// y坐标var…

ssm租房小程序-计算机毕设 附源码42196

SSM租房小程序 摘 要 本论文主要论述了如何使用SSM框架开发一个租房小程序&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构JAVA技术&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述租房小程序的当前背景以及系…

面试题:你怎么理解System.out.println() ?

文章目录 首先分析System源码out源码分析println分析拓展知识点 你如何理解System.out.println() ? 学了这么久的面向对象编程&#xff0c;那如何用一行代码体现呢&#xff1f; 如果你能自己读懂System.out.println()&#xff0c;就真正了解了Java面向对象编程的含义 面向对…

低代码服务商,中小型数字化软件服务商的新出路

数字化时代大背景下&#xff0c;企业信息化向数字化转型成为所有企业发展的必由之路&#xff0c;企业在对业务模式、流程、组织形式、信息技术等方面进行重新定义时&#xff0c;软件必然参与价值创造的全过程&#xff0c;这势必驱使软件成为推动数字化转型的“引擎”&#xff0…

debian 12 配置

1. 修改apt源 修改apt源为http版本 # 默认注释了源码镜像以提高 apt update 速度&#xff0c;如有需要可自行取消注释 deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware # deb-src http://mirrors.tuna.tsinghua.edu.cn/d…

半导体业库存问题缓解,明年迎来良好转机 | 百能云芯

随着全球半导体产业今年产值预计将出现逾1成的衰退&#xff0c;市场一度陷入不确定性。然而&#xff0c;半导体厂商们对于供应链库存的有效去化表示乐观&#xff0c;预计将为明年带来健康的复苏。在各种因素交织的复杂情况下&#xff0c;半导体产业展现出逐步解决库存问题、迎来…

阿里云oss文件上传入门

先登录&#xff1a; 点击进入控制台 点击左上角导航栏按钮 搜索oss&#xff0c;点击进入 进入之后点击立即开通oss按钮&#xff0c;开通之后点击下图立即创建&#xff0c;弹出创建Bucket 填上Bucket名称&#xff0c;读写权限改为公共读。其他不变点击确定创建&#xff0c;完成…