虚拟机的安装与开发环境的配置

2023-05-16

前言

最近开始接触嵌入式,之前也就学过C语言,但是都是是非常基础的一些知识。知识最高峰的时期就是为了过国家计算机二级C 而一通猛学。下面就放入我最近学习笔记的内容。

一、 Linux开发环境的搭建

  1. 下载VirtualBox软件(win10下载5.2.22,win7下载4.3.12)
    VirtualBox官方下载地址
    下载Ubuntu系统镜像(ubuntu12.04 LTS desktop-i386.iso )( LTS为稳定更新开发版)
    Ubuntu官方下载地址
    都保存在一个文件夹里(文件夹自己找位置新建,最好是 英文目录
  2. 安装并运行VirtualBox(默认路径安装即可),新建虚拟机
  3. 虚拟机 名称:Ubuntu(可自定义);类型:Linux ;版本:Ubuntu64/32
  4. 设置虚拟内存大小,至少1024 M
  5. 创建虚拟硬盘,VDI格式,固定大小10G
  6. 挂载系统镜像,设置 → 存储 → 光盘(再点击光盘图标 光盘图标 )→ 选择要挂载的系统镜像(即下载的VirtualBox软件包)。
  7. 安装系统,选择简体中文 → 安装Ubuntu → 检查安装条件(不选择安装时更新)并继续 → 清除整个磁盘并安装Ubuntu并继续 → 选择要安装的磁盘,现在安装。※ 安装时一定要断网,不然会很慢
  8. 开始安装 → Ubuntu → 设置时区(shanghai)→ 设置语言(中文)→ 设置用户名和密码。
  9. 现在重启 → 按 Enter 键移除安装镜像 → 启动Ubuntu。
  10. 右上角系统设置 → 软件更新 → 设置 → 有新版本时通知我(从不)ubuntu软件 → 下载自 → 选择163服务器
  11. Ctrl +Alt + t 打开终端 ,执行:sudo apt-get update(更新软件源),执行:sudo apt-get upgrade(更新操作系统) → 选择y (耐心等待)→ 重启。
  12. 安装功能增强包 → 主窗口菜单中 设备 → 安装增强功能 → 输入密码授权 → 按 Enter 结束 → 关机。
  13. ※ 在关机状态下 → 设置 → 共享文件夹 → 点击加号 → 选择共享文件目录(注意:文件目录为英文目录) →
    勾选自动挂载 → ok。
  14. 启动系统,不出意外就可以挂载了,但目前没有访问权限,执行:sudo usermod -aG vboxsf 用户名(用户名就是你安装时设置的用户名。执行后没有报错/弹出什么问题就行了),然后重启。
  15. 此时就可以与windows共享目录了,设备 → 共享粘贴板 → 双向
  16. 设置 → 系统设置 → 语言支持 → 安装完整语言支持,此时输入法就完整了,Ctrl+ 空格就能切换输入法
  17. 安装搜狗输入法,百度搜狗拼音进入官网 → 选择Linux输入法,下载安装包,按照教程设置系统并安装支持框架 fcitx,找到并双击输入法安装包开始安装,安装完成后重启系统。
  18. 安装vim编译器 和 gcc编译器 :依次输入如下代码
    sudo apt-get install vim
    sudo apt-get install g++

配置环境:找到下面图片中
Ctrl +Alt + t 运行终端
输入vim ~/.bashrc
在文件中寻找alias l='ls -CF'这行代码并在这行代码下面增加如下代码:
alias gcc='gcc -std=gnu99'(更新gcc编译器)
alias rm='rm -i'(rm删除确认)用rm删除的文件无法找回,以防误删需要删除确认

最终结果如图所示:

在这里插入图片描述
最后按下Esc

输入

再输入w+q回车,保存并退出。

至此虚拟机环境基本搭建完毕。

二、 VIM

  1. vim 是什么?
    vim是可以终端下使用的全键盘操作的文件编辑器,可配置、可扩展、可编程的成长型神器。
    基本使用方法:
    (1) 进入vim,vim文件名,文件存在则直接打开,不存在则创建,此时只能阅读代码或修改代码,不适合编写代码。
    (2) 输入i,进入插入模式,可以正常编写代码
    (3) 代码编写完后,按 Ctrl+x执行,按 Enter返回,输入i继续编写
    (4) Ctrl+z 保存退出

  2. vim的三大模式与切换方法
    (1) 正常模式:刚进入时的模式,适合阅读代码、修改代码
    (2) 插入模式:适合编写代码
    (3) 行底模式:进行配置vim,执行vim相关命令
    正常模式 输入i 进入插入模式

    插入模式 按 Esc 进入正常模式

    正常模式 输入: 进入行底模式

    行底模式 按EscCtrl+c返回正常模式

    插入模式和行底模式之间不能直接转换,必须由正常模式跳转

    正常模式:
    ※光标的移动:
    kjhl-------------上下左右移动光标

    PgUp PgDn---------------上下翻页

    home end----------------行首 、行尾

    n+Enter---------------------向后跳转n行

    n+G--------------------------跳转到第n行

    vim file.c +n ------------------进入文件后跳转到第n行

    ※删除代码:
    x ---------------------------------删除一个字
    dw 或 de -----------------------删除一个单词
    d$--------------------------------删除到行尾
    dd--------------------------------删除整行
    ndd------------------------------删除n行

    ※复制代码:
    yy--------------------------------复制整行
    nyy------------------------------复制n行
    p---------------------------------粘贴到下一行

    ※替换代码:
    r ---------------------------------替换一个字符(光标定位在要替换的字符上,按r,然后输入替换后的字符)
    cw / ce-------------------------替换一个单词(把光标定位在要替换的单词首字母,然后按 cw / ce ,单词会被删除并进入插入模式)
    R--------------------------------进入替换模式

    ※撤销与反撤销:
    u -------------------------------撤销之前的操

    Ctrl+r --------------------------取消撤销操作

    插入模式:
    此模式下主要用来编写代码,因此快捷键不多
    Ctrl +i -------------------------相当于制表符tab键
    Ctrl +p ------------------------代码补全
    Ctrl +j -------------------------相当于Enter
    Ctrl +c------------------------返回正常模式

    *行底模式:
    执行vim的一些命令
    q -------------------------------退出
    q!-----------------------------强直退出
    w -------------------------------写入
    wq -----------------------------保存退出
    对vim进行一些配置:
    set nu ------------------------显示行号
    set nonu ---------------------不显示行号
    set ts=4 ----------------------设置tab的宽度
    在行底模式下进行此设置都是临时有效,要长时间有效就要把这些命令写入配置文件中, ~/.vimrc
    输入 vim ~/.vimrc
    输入以下代码配置vimrc

set nu 			"显示行号
syntax on 		"进行语法检查,颜色显示
set hlsearch		"高亮度反白
set bg=dark		"显示不同底色色调
set tabstop=4		"设置tab空格数为4
set shiftwidth=4	"设置缩进宽度为4
set cursorline		"当前行显示下划线
set noexpandtab		"使用空格代替tab,在Makefile中缩进要使用tab
set autowrite       	"自动保存
set noswapfile		"不生成临时文件
set autoindent		"自动缩进
set smartindent		"智能缩进

"---快捷编译--- 直接按Ctrl+x 就能编译运行了
"1编译函数
func! CompileCode()
	"写入文件
	exec "w"
	"判断文件类型
	if &filetype == "cpp"
		exec "!g++ % && ./a.out"
	elseif &filetype == "c"
		exec "!gcc -std=gnu99 % -lm -lpthread && ./a.out"
	endif
endfunc
"2映射快捷键
map <C-x> :call CompileCode()<CR>
imap <C-x> <ESC>:call CompileCode()<CR>
vmap <C-x> <ESC>:call CompileCode()<CR>

"---快捷保存退出---  直接按Ctrl+z 就能保存退出了
"1保存退出函数
func! SaveExit()
	exec "wq"
endfunc
"2映射快捷键
map <C-z> :call SaveExit()<CR>
imap <C-z> <ESC>:call SaveExit()<CR>
vmap <C-z> <ESC>:call SaveExit()<CR>

按Ctrl+z 保存退出,恭喜恭喜配置完毕!
大功告成!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

虚拟机的安装与开发环境的配置 的相关文章

  • ROS::线程锁

    ROS xff1a xff1a 线程锁 boost span class token operator span mutex mutex span class token punctuation span span class token
  • 无人机智能飞行类库设计构思

    搭建无人机 智能飞行类库的主要目的就在于 xff1a 便于无人机路径规划各种算法的实施 xff0c 便于飞行仿真以及便于今后在硬件上实现算法 完整做到这些需要做三方面做工作 xff1a 一 计算几何 计算几何问题主要用于路径优化 避障等 x
  • STL教程:C++ STL快速入门

    目录 1 STL引言 2 STL是什么 xff08 STL简介 xff09 3 STL历史 4 STL组件 5 STL基本结构 6 STL 使用方法 7 STL目录 网址 xff1a STL教程 xff1a C 43 43 STL快速入门
  • vue使用sortablejs插件的时候报Sortable: `el` must be an HTMLElement

    最近因为项目需要很灵活自定义查询 xff0c 故使用了vue和element ui组件库 xff0c 其中el table需要行和列拖拽排序 故使用到了sortable插件 一 报错的排查 首先对 xff1a const tbody 61
  • 记一次Linux 4.15.0-65-generic安装Elasticsearch成功的过程

    一 xff0c 操作系统和安装的应用 xff1a 1 操作系统 xff1a Linux version 4 15 0 65 generic buildd 64 lgw01 amd64 006 gcc version 7 4 0 Ubuntu
  • [docker]笔记-镜像 管理

    1 镜像管理 docker search xxxx 查找镜像 例如查找httpd root 64 localhost docker search httpd 下载镜像 docker pull xxxx root 64 localhost d
  • quill-editor扩展的正确姿势

    一 无关的插曲 曾几何时 xff0c 风云万里 xff0c 万海桑田 耕耘于代码堆里多年 做过android移动端 xff0c 做过web端 xff0c 做过java后端和 net xff0c 也做过python数据分析 但真正扩展源码的亦
  • 导入excel时js转换时间的正确姿势

    一 基础 1 excel的日期是以1900 1 0开始计算的 xff0c 既1900 1 1就是1天 xff1b 2 js的Date是以 1970 1 1 08 00 00 开始的 xff1b excel时间换算如下 xff1a 点击常规后
  • springboot下ClassUtils.getDefaultClassLoader().getResource(“static“).getPath() 空指针异常???

    在static加个文件文件就ok xff0c 不信你看看
  • Compilation failure: Compilation failure

    有a项目和b项目 xff0c 如果a项目打包成功 xff0c b依赖a 现b打包的时候报Compilation failure Compilation failure了 xff0c 原因是a中有 span class token opera
  • mysql数据更新时变更时间自动更新

    ALTER TABLE test CHANGE startTime startTime timestamp NOT NULL ON UPDATE CURRENT TIMESTAMP DEFAULT CURRENT TIMESTAMP
  • docker、docker-compose和Portainer的安装

    一 docker安装 span class token comment 安装docker相关依赖 span yum span class token function install span y yum utils device mapp
  • vue-cli+spring boot前后端分离跨域及session丢失解决办法

    前后端分离跨域笔记 小小的唠叨前端代码后端 小小的唠叨 曾几何时 xff0c 项目开发时间很紧 xff0c 项目组很多的人即不懂vue也不大懂spring boot及mybatic的强大之处 xff0c 也没有做过前后端分离 xff0c 项
  • vue打包整合到spring boot一记

    目录 背景vue cli打包之前的配置总结 背景 前段时间 xff0c 根据需求 xff0c 要将项目烧入到芯片 xff0c 但我的擅长之处就是前后端分离开发 xff0c 因此需要前端vue开发好 xff0c 打包放到后端里面一起执行 那时
  • 小四轴编程入门教程

    小四轴编程入门教程之一 xff1a 陀螺仪和加速度计 在小四轴中 xff0c 陀螺仪是一种用于测量小四轴旋转速度的传感器 xff0c 它测量的是角速度 xff0c 是指物体在单位时间内转过的角度大小 通过测量物体在X Y Z三个轴上的角速度
  • 从0开始教你三天完成毕业设计-后端api

    目录 前言 开始 env 数据库配置文件 app controller 控制器接口api 工具类 分类表 categoryController 收藏表 collecetionController 商品表 goodController 订单表
  • ZYNQ双核通信 Linux+FreeRTOS(一)

    ZYNQ 双核通信 一 OpenAMP开发换环境搭建编译U boot编译Kernel编译设备树什么是devicetree xff1f Devicetree基础设备树属性设备树生成器 xff08 DTG xff09 Task Output P
  • ZYNQ 安装ubuntu文件系统

    ZYNQ 7020 Ubuntu16 04文件系统安装 在关于zynq openamp的章节我们已经完成了zynq 的u boot 内核 xff0c 设备树的制作 xff0c 通过XSDK完成了启动文件的创建 同样道理制作zynq7020的
  • RPMsg:协议简介

    RPMsg xff1a 协议简介 本篇文章转载于简书 xff0c 在此做个整理和备份 xff0c 方便查阅 在此感谢原博主SunnyZhou1024 RPMsg xff1a 协议简介0 起因1 AMP2 RPMsg2 1 Linux中的RP

随机推荐

  • GEM TSU Interface Details and IEEE 1588 Support

    GEM TSU Interface Details and IEEE 1588 Support Chapter 1 IntroductionChapter 2 GEM TSU Clock SourcePCW 中的 GEM TSU 时钟源选择
  • ZYNQ UltraScale+ MPSoC Linux + ThreadX AMP玩法

    ZYNQ UltraScale 43 MPSoC Linux 43 ThreadX AMP玩法 ZYNQ UltraScale 43 MPSoC与ZYNQ 7000架构比较目标 一 创建Linux1 修改kernel2 修改设备树编译 am
  • Zipwire

    文章目录 Chapter 55 Zipwire55 1 Chip specific Zipwire information52 2 Overview55 3 Introduction55 4 Zipwire Block Diagram55
  • arm启动过程详解

    ARM芯片的启动程序的分析和总结 2009 02 04 14 35 26 标签 xff1a 杂谈 分类 xff1a ARM 1 综述 xff1a 目前大多基于ARM芯片的系统都是一个比较复杂的片上系统 xff0c 多数硬件模块都是可配置的
  • 数据读写的乒乓操作

    数据读写的乒乓操作 文中一部分从其他博客中学习到 xff0c 加入了自己实际应用的过程 在重要数据的解帧与处理过程中 xff0c 为了确保数据的实时性与可靠性 xff0c 我们一般对收到的数据存储到芯片的RAM或Flash xff08 掉电
  • 生命在于学习——Linux提权

    本篇文章仅用于学习记录 xff0c 不得用于其他违规用途 一 内核漏洞提权 1 常规查找 查看内核版本信息 uname span class token operator span a uname span class token oper
  • 前入式JUC常用类源码分析

    CountDownLatch span class token keyword public span span class token keyword class span span class token class name Coun
  • dockerfile中的命令:run, cmd, entrypoint, copy和add

    总结一下 xff0c run 可以有多个 xff0c cmd 和entrypoint 只能有一个 xff08 常用来跑app xff09 cmd 可以被docker 指令overwrite xff0c entrypoint不可以 此命令会在
  • Qt类关系一览表

    Qt类关系一览表
  • ros之pid

    PID口诀 参数整定找最佳 xff0c 从小到 大顺序查 先是比例后积分 xff0c 最后再把微分加 曲线振荡很频繁 xff0c 比例度盘要放大 曲线漂浮绕大湾 xff0c 比例度盘往小扳 曲线偏离回复慢 xff0c 积分时间往下降 曲线波
  • 导 Kinect2库,opencv库,pcl库

    导 Kinect2库 opencv库 pcl库 Kinect2驱动安装 https blog csdn net qq 15204179 article details 107706758 ndfreenect2 cmake Kinect2
  • ros中订阅/map话题,获取地图尺寸,获取机器人原点origin,获取地图分辨率resolution (c++,python,waitForMessage,wait_for_message)

    ros中订阅 map话题 获取地图尺寸 获取机器人原点position 获取地图分辨率resolution 1 nbsp include lt ros ros h gt include lt nav msgs OccupancyGrid h
  • geometry_msgs::TransformStamped与geometry_msgs::PoseStamped消息互转

    geometry msgs TransformStamped与geometry msgs PoseStamped消息互转 下面是一个将geometry msgs TransformStamped转换为geometry msgs PoseSt
  • ros中获取小车当前位置

    ros中获取小车当前位置 一 tf2获取小车当前位置 xff1a include 34 tf2 ros transform listener h 34 include 34 tf2 ros buffer h 34 include 34 tf
  • 记一次被正点原子坑了的经历

    被正点原子坑 xff0c 不是买了他们的板子 xff0c 而是用了他们的一个Lwip的配置文件lwipopt h文件 xff0c 事情是这样的 xff0c 我现在开发的这个项目用lwip的库 xff0c 版本是1 4 1 xff0c 上手的
  • SecureCRT连接超时设置-The semaphore timeout period has expired

    设置 设置后就不会出现短时间没有操作连接超时的局面 xff0c 要求需要再次重连的问题 FR 徐海涛 xff08 hunk Xu xff09 QQ技术交流群 xff1a 386476712
  • CANoe-Trace-CAN Error

    CANoe软件CAN Error排查经验案例 系统模拟充电桩 xff0c 和实车车辆通过枪线连接 xff0c 启动充电流程 xff0c 在Trace界面看到CAN1有故障 xff0c CAN Error xff0c 并且是TxError 原
  • Makefile的使用

    Makefile规则 规则解析 一个简单的 Makefile 文件包含一系列的 规则 xff0c 样式如下 xff1a 目标 target 依赖 prerequiries lt tab gt 命令 command 目标 xff08 targ
  • STM32用一个定时器输出多路不同频率及占空比的PWM(输出比较模式)

    我们使用STM32输出PWM时会使用定时器的PWM输出模式来进行生成 xff0c 但是这样子生成PWM是有局限的 xff0c 它只能生成四路频率相同的PWM xff0c 当你设定了TIMx PSC xff08 预分频寄存器 xff09 和T
  • 虚拟机的安装与开发环境的配置

    前言 最近开始接触嵌入式 xff0c 之前也就学过C语言 xff0c 但是都是是非常基础的一些知识 知识最高峰的时期就是为了过国家计算机二级C 而一通猛学 下面就放入我最近学习笔记的内容 一 Linux开发环境的搭建 下载VirtualBo