下载源代码并交叉编译riscv FreeBSD系统和内核

RISCV系统曾经让人神秘到无法接触,交叉编译更是只有耳闻,现在随着RISCV的普及,它们神秘的面纱已经被慢慢揭开。

交叉编译作为RISCV系统中的一个重要环节,也随着RISCV的普及而变得更加容易理解和操作。交叉编译允许开发者在一个平台上编译生成另一个平台上的可执行代码,这对于开发嵌入式系统、操作系统和固件等非常有用。随着RISCV生态系统的完善和工具链的成熟,交叉编译占开发者们日常工作的比重越来越大。

让我们通过交叉编译riscv FreeBSD系统和内核来学习和掌握这项技术吧!

下载FreeBSD源代码

首先下载源代码,可以使用git下载

先pkg安装git

pkg install git

然后git clone 下载FreeBSD源码

git clone https://git.FreeBSD.org/src.git /usr/src

如果git太慢,也可以到网站下载src源码包

比如官方:https://download.freebsd.org/snapshots/riscv/15.0-CURRENT/src.txz

国内镜像一般都没有FreeBSD15 riscv,所以要去官网下。

fetch https://download.freebsd.org/snapshots/riscv/15.0-CURRENT/src.txz

下载后解开到/usr/src目录:

tar -xzvf src.txz 

执行交叉编译

FreeBSD默认使用LLVM进行交叉编译,如果没有,使用pkg install llvm14安装。

然后到/usr/src目录执行:

make TARGET_ARCH=riscv64 buildworld
make TARGET_ARCH=riscv64 buildkernel

即可。当然也可以选择

riscv64-gcc 进行交叉编译,比如先pkg install riscv64-gcc13 安装,
然后再用riscv64-gcc13来进行交叉编译:
make CROSS_TOOLCHAIN=riscv64-gcc13 TARGET_ARCH=riscv64 buildworld

make CROSS_TOOLCHAIN=riscv64-gcc13 TARGET_ARCH=riscv64 buildkernel

编译起来显示如下:

make[1]: "/home/skywalk/usr/src/Makefile.inc1" line 337: SYSTEM_COMPILER: Determined that CC=cc matches the source tree.  Not bootstrapping a cross-compiler.
make[1]: "/home/skywalk/usr/src/Makefile.inc1" line 342: SYSTEM_LINKER: Determined that LD=ld matches the source tree.  Not bootstrapping a cross-linker.
--------------------------------------------------------------
>>> World build started on Tue May  7 17:23:40 CST 2024
----------------------------------------------------------------------------------------------------------------------------
>>> Cleaning up the temporary build tree
--------------------------------------------------------------
rm -rf /usr/obj/home/skywalk/usr/src/riscv.riscv64/tmp--------------------------------------------------------------
>>> Rebuilding the temporary build tree
--------------------------------------------------------------
cd /home/skywalk/usr/src/tools/build;  make DIRPRFX=tools/build/ DESTDIR=/usr/obj/home/skywalk/usr/src/riscv.riscv64/tmp/legacy installdirs
[Creating objdir /usr/obj/home/skywalk/usr/src/riscv.riscv64/tools/build...]
mkdir -p /usr/obj/home/skywalk/usr/src/riscv.riscv64/tmp/legacy/bin /usr/obj/home/skywalk/usr/src/riscv.riscv64/tmp/legacy/lib/geom /usr/obj/home/skywalk/usr/src/riscv.riscv64/tmp/legacy/usr/include/casper /

这里显示“Not bootstrapping a cross-compiler.” 不明白为什么不bootstrapping 交叉编译器.... 

当然,对于大多数人,如果不进行交叉编译(在AMD64编译RISCV),直接在AMD64平台编译AMD64的FreeBSD world和kernel,直接使用

make   buildworld 

make   buildkernel 

即可编译出当前系统的FreeBSD系统来。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

F. Circle Perimeter

思路&#xff1a;线性时间复杂度就可以解决&#xff0c;不用二分&#xff0c;我们枚举横坐标&#xff0c;然后看当前横坐标情况下多少个纵坐标满足条件。 代码&#xff1a; void solve(){int r;cin >> r;int y r, ans 0;for(int x 0;x < r;x ){ //枚举横坐标x&am…

【深度学习】Diffusion扩散模型原理解析1

1、前言 diffusion&#xff0c;这几年一直很火的模型&#xff0c;比如这段时间在网上的文生图大模型——Stable diffusion。就是以diffusion作为基底模型&#xff0c;但由于该模型与VAE那边&#xff0c;都涉及了较多了概率论知识&#xff0c;实在让人望而却步。所以&#xff0…

Linux 磁盘分区工具 gdisk / fdisk

fdisk 是传统的 Linux 磁盘分区工具&#xff0c;磁盘容量有2T的大小限制&#xff1b;gdisk 又叫 GPT fdisk, 作为 fdisk 的升级版&#xff0c;主要使用的是GPT分区类型&#xff0c;用来划分容量大于2T的硬盘&#xff0c;本文介绍使用方法。 简介 早期的磁盘使用 fdisk 工具分区…

计算机视觉中的计算几何

计算几何领域出现于 20 世纪 70 年代&#xff0c;研究解决几何问题的数据结构和算法。这尤其包括确定图像内的拓扑结构&#xff0c;或者实际上是更高维的表示&#xff0c;例如点邻域&#xff0c;这可以帮助从数字图像数据等中导出几何意义[1]。 计算机视觉主要涉及静态或动态图…

【Web后端】servlet基本概念

1.ServletAPI架构 HttpServlet继承GenericServletGenericServlet实现了Servlet接口&#xff0c;ServletConfig接口,Serializable接口自定义Servlet继承HttpServlet 2.Servlet生命周期 第一步&#xff1a;容器加载Servlet第二步&#xff1a;调用Servlet的无参构造方法&#xf…

智能助手上线,大模型提供云服务专属顾问

业务背景 在使用云服务的时候&#xff0c;当您遇到复杂问题&#xff0c;如配置、关联或计费方式不明确时&#xff0c;可能需要向客服提交工单进行技术沟通。在漫长的工作过程中&#xff0c;耗费了宝贵的时间和精力。 2024 年 4 月&#xff0c;百度智能云正式推出了融合文心大…

数据库SQL语言实战(八)

目录 练习题 题目一 题目二 题目三 题目四 题目五 题目六 题目七 题目八 题目九 题目十 练习题 题目一 找出年龄小于20岁且是“物理学院”的学生的学号、姓名、院系名称,按学号排序 create or replace view test6_01 as select S.sid,S.name,S.dname fr…

【基础算法总结】二分查找一

二分查找一 1. 二分查找2.在排序数组中查找元素的第一个和最后一个位置3.x 的平方根4.搜索插入位置 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1…

【Spring之依赖注入】2. Spring处理@Async导致的循环依赖失败问题

使用异步Async注解后导致的循环依赖失败详解 1 问题复现1.1 配置类1.2 定义Service1.3 定义Controller1.4 启动springboot报错 2.原因分析&#xff1a;看Async标记的bean注入时机2.1 循环依赖生成过程2.2 自检程序 doCreateBean方法 3.解决方案3.1 懒加载Lazy3.1.1 将Lazy写到A…

综合性练习(验证码案例)

目录 一、需求 二、准备工作 三、约定前后端交互接口 1、需求分析 2、接口定义 四、Hutool工具介绍 1、引入依赖 2、测试使用Hutool生成验证码 五、实现服务器端代码 代码解读&#xff1a; 六、调整前端页面代码 七、运行测试 随着安全性的要求越来越高&#xff0c…

Vue3专栏项目 -- 二、自定义From组件(下)

需求分析&#xff1a; 现在我们还需要一个整体的表单在单击某个按钮的时候可以循环的验证每个input的值&#xff0c;最后我们还需要有一个事件可以得到最后验证的结果&#xff0c;从而进行下一步的操作 如下&#xff0c;我们应该有一个form表单包裹着全部的input表单&#xf…

HC-05的简介与使用

蓝牙概述 蓝牙&#xff08;Bluetooth&#xff09;是一种用于无线通信的技术标准&#xff0c;允许设备在短距离内进行数据交换和通信。它是由爱立信&#xff08;Ericsson&#xff09;公司在1994年推出的&#xff0c;以取代传统的有线连接方式&#xff0c;使设备之间能够实现低功…