ubuntu主机搭建sysroot交叉编译环境
ubuntu主机搭建sysroot交叉编译环境
主机是 ubuntu22.04 x86-64
| host | ubuntu22.04 |
| host-arch | x86-64 |
| host-cpu | i9-13900k |
目标板是香橙派5b ,ubuntu22.04,aarch64 ,cpu rk3588s
| target | ubuntu22.04 |
| target-arch | aarch64 |
| target-cpu | rk3588s |
安装 qemu-user-static
进入 chroot 环境,必须的仿真环境 qemu-user-static
sudo apt-get update
sudo apt-get install qemu-user-static
复制一份目标镜像,用于交叉编译开发环境
sudo dd if=Orangepi5b_1.0.8_ubuntu_jammy_desktop_xfce_linux6.1.43.img of=Orangepi5b.img bs=4M status=progress
扩大镜像
sudo qemu-img resize Orangepi5b.img +40G
你已经成功地扩展了 .img 文件的大小,但还需要调整分区表以利用新增的空间:
1. 映射 .img 文件
将 .img 文件重新映射到环回设备:
sudo losetup -P /dev/loop21 Orangepi5b.img
2. 使用 fdisk 扩展分区
-
打开
fdisk:sudo fdisk /dev/loop21 -
打印当前分区表:
- 输入
p查看当前分区表。
- 输入
-
删除最后一个分区:
- 输入
d删除分区,选择分区号 2(即Orangepi5b.img2)。
- 输入
-
创建新的分区:
- 输入
n创建新的主分区。 - 选择分区号 2。
- 回车,使用默认的起始扇区。
- 回车,接受默认值,结束扇区设置为最大。
- 输入
-
保存并退出:
- 输入
w保存更改并退出fdisk。
- 输入
3. 检查并修复文件系统
使用 e2fsck 检查并修复文件系统,刚才的分区2:
sudo e2fsck -f /dev/loop21p2
4. 扩展文件系统
使用 resize2fs 扩展文件系统:
sudo resize2fs /dev/loop21p2
5. 挂载文件系统,进入 chroot 环境:
挂载文件系统:
sudo mount /dev/loop21p2 /media/wmx/opi_root
sudo mount --bind /proc /media/wmx/opi_root/proc
sudo mount --bind /sys /media/wmx/opi_root/sys
sudo mount --bind /dev /media/wmx/opi_root/dev
sudo mount --bind /dev/pts /media/wmx/opi_root/dev/pts
将 QEMU 的静态二进制文件拷贝到目标文件系统中
sudo cp /usr/bin/qemu-aarch64-static /media/wmx/opi_root/usr/bin/
进入 chroot 环境
sudo chroot /media/wmx/opi_root /bin/bash
6. 检查可用空间
chroot 命令行:
root@wmx-pc:/home/orangepi/workspace# df -h
文件系统 大小 已用 可用 已用% 挂载点
/dev/loop21p2 47G 6.8G 39G 16% /
成功地扩展分区并调整文件系统,从而在 chroot 环境中创建工作空间
7 搭建工作环境
下载llvm aarch64架构的编译工具链,复制到工作空间中
主机命令行:
cp -rv LLVM-ET-Arm-19.1.1-Linux-AArch64.tar.xz /media/wmx/opi_root/workspace
复制main.cpp到工作空间中
主机命令行:
cp -rv main.cpp /media/wmx/opi_root/workspace
其中main.cpp:
#include <iostream>
using namespace std;
int main(){std::cout<<"Hello World!";return 0;
}
chroot 命令行:
cd /home/orangepi/workspace
export PATH=$PATH:/home/orangepi/workspace/LLVM-ET-Arm-19.1.1-Linux-AArch64/bin# 编译
clang++ -I/usr/include/c++/11 -I/usr/include/aarch64-linux-gnu/c++/11 -L/usr/lib/gcc/aarch64-linux-gnu/11/ main.cpp -o main
运行,验证是aarch64程序
root@wmx-pc:/home/orangepi/workspace# ./main
Hello World!
root@wmx-pc:/home/orangepi/workspace# file main
main: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, not stripped
8 退出 chroot
chroot 命令行:
exit
9 关闭所有挂载点
sudo umount /media/wmx/opi_root/proc
sudo umount /media/wmx/opi_root/sys
sudo umount /media/wmx/opi_root/dev/pts
sudo umount /media/wmx/opi_root/dev
sudo umount /media/wmx/opi_root
sudo losetup -d /dev/loop21
相关文章:
ubuntu主机搭建sysroot交叉编译环境
ubuntu主机搭建sysroot交叉编译环境 主机是 ubuntu22.04 x86-64 hostubuntu22.04host-archx86-64host-cpui9-13900k 目标板是香橙派5b ,ubuntu22.04,aarch64 ,cpu rk3588s targetubuntu22.04target-archaarch64target-cpurk3588s 安装 qemu-user-static 进入 …...
Python注意力机制Attention下CNN-LSTM-ARIMA混合模型预测中国银行股票价格|附数据代码...
全文链接:https://tecdat.cn/?p38195 股票市场在经济发展中占据重要地位。由于股票的高回报特性,股票市场吸引了越来越多机构和投资者的关注。然而,由于股票市场的复杂波动性,有时会给机构或投资者带来巨大损失。考虑到股票市场的…...
实验三 JDBC数据库操作编程(设计性)
实验三 JDBC数据库操作编程(设计性) 实验目的 掌握JDBC的数据库编程方法。掌握采用JDBC完成数据库链接、增删改查,以及操作封装的综合应用。实验要求 本实验要求每个同学单独完成;调试程序要记录调试过程中出现的问题及解决办法…...
各种环境换源教程
目录 pip 换源相关命令永久换源1. 命令行换源2. 配置文件换源 临时换源使用官方源使用镜像源 报错参考 npm换源相关命令永久换源1. 命令行换源2. 配置文件换源 pip 换源 相关命令 更新 pip 本身 首先,为了确保你使用的是最新版本的 pip,可以通过以下命…...
Rust项目中的Labels
姊妹篇: Go项目中的Labels 按照issue数量从多到少排序: https://github.com/rust-lang/rust/labels?page2&sortcount-desc https://github.com/rust-lang/rust/labels/A-contributor-roadblock 第1页: 标签/中文说明数字T-compiler/编译器Relevant to the compiler tea…...
Jmeter的安装和使用
使用场景: 我们需要对某个接口进行压力测试,在多线程环境下,服务的抗压能力;还有就是关于分布式开发需要测试多线程环境下数据的唯一性。 解决方案: jmeter官网连接:Apache JMeter - Apache JMeter™ 下载安装包 配…...
初识Electron 进程通信
概述 Electron chromium nodejs native API,也就是将node环境和浏览器环境整合到了一起,这样就构成了桌面端(chromium负责渲染、node负责操作系统API等) 流程模型 预加载脚本:运行在浏览器环境下,但是…...
go语言中的通道(channel)详解
在 Go 语言中,通道(channel) 是一种用于在 goroutine(协程)之间传递数据的管道。通道具有类型安全性,即它只能传递一种指定类型的数据。通道是 Go 并发编程的重要特性,能够让多个 goroutine 之间…...
【JS】内置类型的相关问题
我是目录 引言内置类型undefined与nullnull和undefined的区别字符串转换为字符串数字0.1+0.2不等于0.3NaNBigInt大数相加问题原生函数(封箱与解封)判断类型的方法typeofinstanceofObject.prototype.toString.callconstructor类型转换toStringtoNumbertoBoolean显式强制类型转…...
Mac上无法访问usr/local的文件
sudo chmod 755 /usr/loca 最后用百度提供的方法解决了...
http 常见状态码
1xx 信息,表示临时响应并需要请求者继续执行操作 2xx 成功,操作被成功接收并处理 3xx 表示要完成请求,需要进一步操作。通常,这些状态码用来重定向 4xx 客户端错误,请求包含语法错误或无法完成请求 5xx 服务…...
代码训练营 day59|并查集
前言 这里记录一下陈菜菜的刷题记录,主要应对25秋招、春招 个人背景 211CS本CUHK计算机相关硕,一年车企软件开发经验 代码能力:有待提高 常用语言:C 系列文章目录 第59天 :第十一章:图论part05 文章目录…...
Node.js——fs模块-路径补充说明
1、相对路径: ./座右铭.txt 当前目录下的座右铭.txt座右铭.txt 等效于上面的写法../座右铭.txt 当前目录的上一级目录中的座右铭.txt 2、绝对路径 D:/Program File Windows系统下的绝对路径/usr/bin Linux系统…...
华为ENSP--ISIS路由协议
项目背景 为了确保资源共享、办公自动化和节省人力成本,公司E申请两条专线将深圳总部和广州、北京两家分公司网络连接起来。公司原来运行OSFP路由协议,现打算迁移到IS-IS路由协议,张同学正在该公司实习,为了提高实际工作的准确性和…...
论软件可靠性设计及其应用
摘要 2023 年 3 月,我所在的公司承接了某智慧加油站平台的建设工作。该项目旨在帮助加油站提升运营效率、降低运营成本和提高销售额。我在该项目中担任系统架构设计师,负责整个项目的架构设计工作。 本文结合我在该项目中的实践,详细论述了…...
Android中桌面小部件framework层使用到的设计模式
在Android中,桌面小部件(App Widget)的Framework层采用了多种设计模式,以实现模块化、可维护性和高效的交互。 以下是Android桌面小部件Framework层中常用的设计模式及其具体应用: 1. 观察者模式(Observe…...
【JavaEE进阶】HTML
本节⽬标 认识 HTML 的基本结构, 学习常⽤的 HTML 标签. 一 HTML基础 1.什么是HTML HTML(Hyper Text Markup Language), 超⽂本标记语⾔. 超⽂本: ⽐⽂本要强⼤. 通过链接和交互式⽅式来组织和呈现信息的⽂本形式. 不仅仅有⽂本, 还可能包含图⽚, ⾳频, 或者⾃已经审阅过它…...
ElasticSearch 添加IK分词器
ElasticSearch 添加IK分词器 前言一、IK分词器的算法二、Ik分词器的下载安装(Winows 版本)三、Ik分词器的下载安装(Linux 版本)四、验证测试(postman工具)测试 ik_smart 分词算法测试 ik_max_word 分词算法…...
可视化建模与UML《顺序图实验报告》
旷野的规则是永不回头。 一、实验目的: 1、熟悉顺序图的构件事物。 2、熟悉发送者与接受者的关系 3、熟练掌握描绘顺序图 4、加深对顺序图的理解和应用能力 二、实验环境: window7 | 10 | 11 EA15 三、实验内容: 据如下描述绘制顺序图&…...
Mac的极速文件搜索工具,高效管理文件
Mac的资源管理可以说是许多转Mac的朋友用不明白的一点了,访达怎么用,文件怎么找,为什么找不到,非常的头大 All作为Mac上的极速文件搜索管理工具,有效的为文件查找困难的用户解决难题 基于极速搜索引擎,快…...
如何通过Vial-QMK打造专属键盘体验:从入门到精通的个性化定制指南
如何通过Vial-QMK打造专属键盘体验:从入门到精通的个性化定制指南 【免费下载链接】vial-qmk QMK fork with Vial-specific features. 项目地址: https://gitcode.com/gh_mirrors/vi/vial-qmk 在数字化时代,键盘作为人与计算机交互的核心工具&…...
OpenClaw+Qwen3.5-4B-Claude:个人知识库自动更新系统
OpenClawQwen3.5-4B-Claude:个人知识库自动更新系统 1. 为什么需要自动化知识管理 作为一个技术从业者,我每天都会接触到大量信息——技术博客、论文摘要、行业动态、代码库更新等等。过去三年里,我尝试过各种笔记工具和知识管理方法&#…...
Mac上PPT讲稿一键变文稿:用AppleScript自动化导出备注到TXT(附完整代码)
Mac上PPT讲稿一键变文稿:用AppleScript自动化导出备注到TXT(附完整代码) 每次做完PPT,看着密密麻麻的备注栏,你是不是也头疼怎么把这些零散的讲稿整理成连贯的文档?作为一位经常需要准备培训材料的讲师&…...
STM32串口环形队列IAP固件更新方案
基于STM32串口环形队列的IAP实现方案1. 项目概述1.1 系统架构本方案实现了一种基于STM32F103C8T6微控制器的串口IAP(In-Application Programming)系统,采用环形队列缓冲机制解决有限SRAM空间下的固件更新问题。系统将64KB Flash空间划分为四个功能区域:B…...
终极指南:使用Rust工具uesave轻松编辑虚幻引擎游戏存档
终极指南:使用Rust工具uesave轻松编辑虚幻引擎游戏存档 【免费下载链接】uesave 项目地址: https://gitcode.com/gh_mirrors/ue/uesave uesave-rs是一款基于Rust语言开发的专业工具,专门用于读取和写入虚幻引擎的GVAS格式游戏存档文件。这款强大…...
软件工程实战:如何用数据流图搞定图书馆管理系统设计(附避坑指南)
软件工程实战:如何用数据流图搞定图书馆管理系统设计(附避坑指南) 图书馆管理系统是软件工程课程中的经典案例,但许多初学者在绘制数据流图时容易陷入"画了等于没画"的困境——要么遗漏关键外部实体,要么数据…...
FLUX.1-dev FP8量化模型:让AI绘画不再依赖高端显卡
FLUX.1-dev FP8量化模型:让AI绘画不再依赖高端显卡 【免费下载链接】flux1-dev 项目地址: https://ai.gitcode.com/hf_mirrors/Comfy-Org/flux1-dev 还在为显卡显存不足而无法体验最新AI绘画技术而烦恼吗?FLUX.1-dev FP8量化模型正是为你量身打造…...
3分钟快速上手!Balena Etcher终极镜像烧录工具完全指南
3分钟快速上手!Balena Etcher终极镜像烧录工具完全指南 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher Balena Etcher是一款革命性的跨平台镜像烧录工…...
Qwen3.5-4B-Claude-Opus真实作品:网络协议TCP三次握手状态机推理生成
Qwen3.5-4B-Claude-Opus真实作品:网络协议TCP三次握手状态机推理生成 1. 模型介绍 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF 是一个基于 Qwen3.5-4B 的推理蒸馏模型,专门针对结构化分析、分步骤回答、代码与逻辑类问题进行了优化。该模型…...
AutoHotkey实战:5分钟搞定Mac/Windows跨平台快捷键统一(附完整脚本)
AutoHotkey实战:5分钟搞定Mac/Windows跨平台快捷键统一(附完整脚本) 对于频繁切换Mac和Windows双系统的开发者来说,最令人抓狂的莫过于两种操作系统下完全不同的快捷键体系。特别是Cmd/Ctrl键位的混乱,常常让人在复制粘…...
