IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 一生一芯预学习chapter1-PA0 -> 正文阅读

[系统运维]一生一芯预学习chapter1-PA0

此博客主要记录自己的学习历程。

0、前言

官方要求使用ubuntu22.04版本,按照要求下载并安装ubuntu22.04虚拟机。这里就省略了哈。

1、测试网络情况

可以正常通讯即可。

ping mirrors.tuna.tsinghua.edu.cn -c 4
ping www.baidu.com -c 4

2、命令行更新软件源

sudo bash -c 'echo "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse" > /etc/apt/sources.list'
cat /etc/apt/sources.list 
sudo apt update 
sudo apt upgrade

3、安装重要软件

1)安装官方要求的工具。

sudo apt install build-essential    # build-essential packages, include binary utilities, gcc, make, and so on
sudo apt install man                # on-line reference manual
sudo apt install gcc-doc            # on-line reference manual for gcc
sudo apt install gdb                # GNU debugger
sudo apt install git                # revision control system
sudo apt install libreadline-dev    # a library used later
sudo apt install libsdl2-dev        # a library used later

2)安装并配置gvim

具体请参考:RISCV学习笔记5.1–ubuntu18.04安装芯片设计软件(vcs、verdi)的准备工作
当然,配置也可以参考一生一芯官网的哈。Configuring vim

3)安装tmux

使用命令sudo apt install tmux -y安装即可。
接着需要配置tmux。

cd ~
gvim .tmux.conf

输入下面的内容,保存并退出。

bind-key c new-window -c "#{pane_current_path}"
bind-key % split-window -h -c "#{pane_current_path}"
bind-key '"' split-window -c "#{pane_current_path}"

4)安装中文输入法

sudo apt install fcitx-googlepinyin

之后的配置请参考:ubuntu学习C语言之四任务法

4、运行hello world程序

1)Write a “Hello World” program under GNU/Linux

注意:本教程路径中的icer需要换成自己的用户名

mkdir /home/icer/Desktop/work
mkdir /home/icer/Desktop/work/learn
mkdir /home/icer/Desktop/work/learn/test1
cd /home/icer/Desktop/work/learn/test1
touch hello.c
g hello.c

写好代码后输入:wq保存并退出。

#include <stdio.h>

int main(void)
{
	printf("hello world!!!\n");
	return 0;
}

在这里插入图片描述
使用命令gcc hello.c -o hello -g -Wall -Werror来编译写好的C文件,即可以得到可执行文件。
在这里插入图片描述

2)Write a Makefile to compile the “Hello World” program

当然,也可以写一个Makefile脚本来编译我们的写好的c语言。

这里采用RTFM的方式,即直接去查找官方的手册。官方
在这里插入图片描述

touch Makefile
gvim Makefile

写好代码后输入:wq保存并退出。
在这里插入图片描述
运行make即可以执行makefile脚本。
在这里插入图片描述
运行make clean可以删除生成文件。
在这里插入图片描述

3)Learn to use GDB

最后使用gdb来调试写好的可执行文件。

gdb edit

在这里插入图片描述
输入b main创建一个断点。
在这里插入图片描述
使用r来运行程序,可以看到运行到刚才设定的断点停下来了。
在这里插入图片描述
输入l可以查看源代码。
在这里插入图片描述
输入q来退出gdb调试。
在这里插入图片描述
当然,有个学习gdb的网站也放一下,A GDB Tutorial with Examples

5、下载源码

注意:本教程路径中的icer需要换成自己的用户名

mkdir /home/icer/Desktop/work/ics2022
cd /home/icer/Desktop/work/ics2022

0、使用命令git clone -b ysyx2204 git@github.com:OSCPU/ysyx-workbench.git来下载源码,但是会出现下面的下载错误。
在这里插入图片描述
1、首先配置git属性。
在这里插入图片描述
2、使用 ssh-keygen -t rsa -C "your@email.com",注意双引号中是你的邮箱。运行完后即可以生成密钥文件。

使用命令cat ~/.ssh/id_rsa.pub来得到密钥,复制全部输出内容到剪切板。
3、登录github,进入设置界面。
在这里插入图片描述
4、点击添加密钥即可。
在这里插入图片描述
在这里插入图片描述
5、继续使用命令git clone -b ysyx2204 git@github.com:OSCPU/ysyx-workbench.git来下载源码。
在这里插入图片描述

6、官方源码相关配置

1)进入项目文件夹中。
在这里插入图片描述
2)运行下面的代码,会下载一些文件到你的项目文件夹中,请耐心等待哦。

git branch -m master
bash init.sh nemu
bash init.sh abstract-machine
source ~/.bashrc

3)运行命令来检查一下变量是否被添加成功。

echo $NEMU_HOME
echo $AM_HOME

在这里插入图片描述
4)查看并创建分支。其中git branch用来查看分支,git checkout用来创建分支。

git branch
git checkout -b pa0

5)修改Makefile第一和第二行的学号和姓名,确保真实哦。
6)使用git status来看项目状态,可以看到Makefile文件提示被修改。
在这里插入图片描述
7)使用git diff来查看修改的具体内容。
在这里插入图片描述
8)添加更改并上传文件。

git add .
git commit -m "modified my info"

在这里插入图片描述

7、官方源码编译

参考:南大计算机系统实验PA0 Compiling and Running NEMU报错解决方法
1)进入项目的nemu文件夹中。
在这里插入图片描述
2)安装llvm。

sudo apt install llvm llvm-dev    

3)运行make menuconfig,但是会出现错误。
在这里插入图片描述
4)需要安装包。sudo apt install bison。安装包后,继续运行make menuconfig。这时候需要继续安装一个包。
在这里插入图片描述
5)需要安装包。sudo apt install flex。安装包后,继续运行make menuconfig
6)跳出窗口后,直接点击exit并点击yes即可。
在这里插入图片描述

7)执行make指令。
在这里插入图片描述
8)执行make run指令,虽然出现下载的错误提示,之后在PA1的时候会进行修复的哈。
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:56:35  更:2022-09-13 12:00:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 18:54:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计