<-- B盘:Ubuntu使用教程 -->
1.VMware软件安装<virtualbox||VMware>
VMware Workstation 10.15
2.虚拟主机创建
(硬件分配:根据电脑实际情况,一般5:5分;硬盘最好独立的分区300G以上)
1.创建新的虚拟机->典型->稍后安装操作系统->(客户机操作系统:Linux,版本:Ubuntu64位)
->(虚拟机名称:默认Ubuntu 64位,位置:自设定)->(磁盘大小:100G,存储为单个文件)
->(硬件配置:网络:桥接模式)->关闭->完成
2.Ubuntu安装(Ubuntu-16.04.5):双击CD/DVD(SATA)->使用ISO映像文件
->选择ubuntu镜像路径->确定
->单击启动客户机->自动安装Ubuntu系统
3.系统基本设置
语言:简体中文 ->install Ubuntu ->(不用选择更新和安装第三方软件)->(选中安装Ubuntu并清掉磁盘)
->现在安装->选择我的地址(时区)—>(设置账户密码)
<中英文切换:Ctrl+空格>
->安装完成后将镜像路径更改为从物理位置启动(CD路径取消)
4.VMware Tools安装(它可以实现主机与虚拟机文件共享)
->点击虚拟机->安装VM Tools->将下载的文件复制到桌面->(提取到此处)<解压>
->打开终端->(sudo su)->(cd 桌面)<进入桌面目录> ->(ls)<查看目录下的文件> ->(cd 文件名)<进入文件目录>
->(sudo ./安装包)<./文件名, 是执行这个文件> ->一直回车
5.外观设置:
->设置分辨率(4:3 1024x768) ->设置电源(从不挂起) ->网络(保证和自己电脑在同一个网段,IPV4设置为手动固定IP)
->软件与更新(选择下载源为中国的服务器) ->更新(设置为从不)
6.虚拟机连接USB设备
1.插上USB设备后,VMware会提示连接到哪儿,选择连接到虚拟机,即可连接到我们的Ubuntu,
在VMware右下角点击磁盘断开连接即可断开该磁盘,它会自动切换到windows下
3.Shell命令
常用的命令:
1.ls 目录信息查看 (ls -a)(ls -l)(ls -al)(ls -f)(ls -i)(ls -n)
2.cd 目录切换 (cd /home/.. <前面的/代表根目录>)(cd / <回到根目录>)(cd || cd ~ || cd /home/jc <什么都不带回到当前用户目录下>)
3.pwd 当前目录显示 ()
4.uname 系统信息查看 (uname -a)()
5.clear 清理屏幕 ()
6.cat 显示文件内容 (cat etc/profile <必须是文件>)
7.sudo 切换用户身份 (sudo apt-get install mplayer)
8.cp 文件拷贝 (cp a.c p.c)
9.su 切换用户 (sudo su root <切换到root用户下>)(su jc <切换到普通用户不用加sudo>)
10.mv 移动文件 (mv a.c b.c)
11.mkdir 创建文件夹 (mkdir test)
12.touch 创建文件 (touch a.c)
13.rm 删除文件 (rm xxx -rf <-rf也可删除目录>)
14.rmdir 目录删除 (rm xxx -rf)
15.ifconfig 显示网络配置信息 (ifconfig -a || ifconfig)(eth0 up 启用)(eth0 down 关闭)(eth0 reload 重启)(eth0 hw ether 00:AA:BB:CC:DD:EE 修改MAC地址)(eth0:ws arp 启停arp)(eth0 mtu 1500 设置最大传输单元)(sudo ifconfig ens33 192.168.43.200 修改ip地址)(--help 查看命令类型)
16.reboot 重启命令
17.poweroff 关机命令
18.man 系统帮助 (man printf <用来查看系统函数方法>)
19.sync 数据同步写入磁盘 (将修改文件时,保存在缓存的数据同步到磁盘)
20.find 查找文件 (find -name a.c <按文件名查找文件>)
21.grep 查找内容 (grep -nr "内容" / <查找目录下包含内容的文件名以及内容行数>) <CTRL + C 打断命令>
22.du 文件夹大小查看 (du test/)(du /lib -sh)(-)
23.df 磁盘空间查看
24.gedit 打开某个文件 (gedit a.c <类似记事本>)
25.ps 当前的系统进程查看 ( <类似任务管理器>)
26.top 进程实时运行状态查看
27.file 文件类型查看 (file a.c)
特定功能命令:
1.在Ubuntu常用软件安装
安装方式分类(1.APP Store 2.Sudo apt-get install 3.deb软件包 4.自己下载源码编译安装)
1.sudo apt-get install git <git软件安装>
如果无法安装,先强制关掉其它任务的冲突(sudo rm /var/cache/apt/archives/lock)(sudo rm /var/lib/dpkg/lock)
如果还是无法安装,先重启,再安装
2.sudo apt-get install mplayer
3.dpkg命令去安装.deb软件包(类似windows下的.exe文件) <例:网易云Linux版客户端安装>(sudo dpkg -i 包名)
4.自己下载源码编译安装 <例:tree安装,树形显示文件>(百度tree源码,第一条打开下载文件,再Linux下载文件夹下)
解压 ->进入到包目录<tree-1.8.0/> ->执行make命令 ->执行 sudo make install ->安装完成 <测试是否安装成功,tree --help>
4.Ubuntu文件系统结构
/bin 可执行文件
/boot 内核和启动文件
/dev 设备驱动文件 <这个文件在硬件驱动开发时经常用到>
/etc 存放系统配置文件,比如账户密码,各种服务起始地址
/home 用户主文件夹
/lib 存放库文件
/media 放置可插拔设备,比如SD卡,U盘 <查看U盘内容时需到这儿>
/mnt 挂载点,在此处挂在额外的设备
/opt 可选的文件和程序存放目录,给第三方软件放置的目录
/root root用户目录,即系统管理员目录
/sbin 一般时系统开机过程中所需的命令
/srv 服务相关目录,比如网络服务
/sys 记录内核信息,虚拟文件系统
/tmp 临时目录
/var 存放一些变化的文件,比如日志文件
/usr UNIX Software Resource,存放与系统用户有关的文件
/proc 虚拟文件系统,数据放置到内存中,存放系统运行信息
5.磁盘管理
1.查看磁盘外设(cd /dev) ->(ls sd* <sdb表示U盘 sdb1表示U盘的第一个分区>) <磁盘默认挂载到media下>
2.查看文件大小(du -h --max-depth=1 <1级目录>)
3.磁盘挂载(sudo mount /dev/sdb1 /media/jc/udisk/)(sudo mount -o iocharset=utf8 /dev/sdb1 /media/jc/udisk <有中文时使用>)
4.磁盘卸载(sudo umount /media/jc/.../ -f)<1.将磁盘解锁2.退出对磁盘的占用>
5.磁盘分区(sudo fdisk -l <查看分区>)(sudo fdisk /dev/sdb <分区><扇区计算:1GB=1024*1024*1024B=/512=2097152扇区+2048初始位置=2099200扇区>)
5.分区文件格式(sudo mkfs -t vfat /dev/sdb1)
6.压缩和解压缩
<tar和tar.gzip是Ubuntu最常用的两种压缩格式>
1.gzip (gzip a.c)(gzip -d a.c.gz)(gzip -r gztest <将目录里面的文件都压缩>)
2.bzip2 (bzip2 -z a.c)(bzip2 -d a.c.bz2)
3.tar<打包压缩工具>
[-f] 使用归档文件
[-c] 创建新归档,创建压缩文件
[-x] 从图档中解出文件,解压缩
[-j] 使用bzip2压缩格式
[-z] 使用gzip压缩格式
[-v] 打印出命令执行过程
1.对.tar.bz2进行压缩和解压缩
(tar -vxjf xxx.tar.bz2 <解压缩>)(tar -vcjf xxx.tar.bz2 descxxx <压缩>)
2.对.tar.gz进行压缩和解压缩
(tar -vxzf xxx.tar.gz <解压缩>)(tar -vczf xxx.tar.gz descxxx <压缩>)
4.rar格式 (sudo apt-get install rar)(rar x xxx.rar <解压缩>)(rar a xxx.rar descxxx <压缩>)
5.zip格式 (zip -rv xxx.zip xxx <压缩>)(unzip test.zip <解压缩>)
7.用户和用户组
<三种用户:初次创建的用户,ROOT用户,普通用户;>
<Linux用户记录在/etc/passwd这个文件内,密码记录在/etc/shadow这个文件内>
<UID和GID,一个用户可以加入多个组><用户和用户组的意义:管理文件访问权限>
<用户组信息存储在/etc/group文件中>
安装用户用户组图形界面(sudo apt-get install gnome-system-tools)
(sudo adduser jc01 <添加用户>)(sudo finger jc01 <查找用户,先安装sudo apt-get install finger>)
(sudo passwd jc01 <修改密码>)(sudo deluser jc01 <删除用户>)
(sudo addgroup jc_g01 <添加组>)(group jc_g01 <显示组内用户>)(sudo delgroup jc_g01 <删除组>)
8.Linux连接文件
<符号连接<软连接>和硬连接<通过inode连接>>
<对于硬连接: 只有删除文件和文件的所有连接后,才算真的删除;改变其中任何文件或连接,其它的都会改变>
(ln hello hello1 <创建硬连接,不可跨文件系统>)(ll -i hello* <查看文件的连接节点>)
(ln -s /home/jc/hello hello2 <符号连接相当于快捷方式,创建时文件必须是绝对路径;>) {如果是相对路径,cp -d hello2 test/ 文件会失效 <-d是保持文件自有属性>}
9.vim编辑器
<自带一个vi编辑器,vim需要先安装,sudo apt-get install vim>
<三种模式:指令模式(一般模式),编辑模式,命令行模式(底行模式)>
(vim my.txt <用vim编辑器打开文件>)
[a] 在当前光标的后面进入编辑模式
[A] 当前光标行尾
[i] 在当前光标的前面进入编辑模式
[I] 当前光标行首
[o] 光标行下方新建行
[O] 光标行上方新建行
[s] 删除光标所在字符
[r] 替换光标处字符
[Esc] 退出编辑模式,光标可以在文本内容上移动
[x] 保存当前文档并退出
[q] 退出
[w] 保存文档
[q!] 退出不保存
[dd] 删除光标所在行
[u] 撤销,恢复上一步
[.] 重复前一个操作
[yy] 复制光标所在行
[nyy] 复制光标所在行并附带下n行
[p和P] 复制到光标下一行 和 复制到光标上一行; <它是将复制好的内容粘贴出来>
10.在Linux下,写一个简单的C程序
1.设置vim编辑器
(设置TAB键为4个空格,vim默认TAB是8个空格)(打开 /etc/vim/vimrc, 在最后加上 set ts=4)
(显示行号)(打开 /etc/vim/vimrc, 在最后加上 set nu)
2.创建1个.c文件,并用vim打开并编写代码
3.使用gcc编译(gcc a.c -o a)
4.执行这个执行文件(./a)
<gcc选项 -c 只编译不链接执行文件,-o 输出可执行文件,-g 添加调试信息,-O 优化编译,-O2 更优化编译>
11.Makefile
<make工具使用gcc来自动完成编译工作,对于c文件较多的工程,只编译修改的文件,避免重复编译>
<使用Makefile文件,描述了整个工程的编译连接规则,依赖关系>
1.vim Makefile
2.编写依赖关系
main:a.o b.o c.o
gcc -o main a.o b.o c.o
a.o: a.c
gcc -c a.c
b.o: b.c
gcc -c b.c
c.o: c.c
gcc -c c.c
clean:
rm *.o
rm main
3.执行make工具的命令 <make会检查文件是否更新,仅编译修改过的文件>
(make <默认是执行文件Makefile>)
(make clean <清除文件>)
4.Makefile基本语法
1.规则格式
目标...:依赖文件集合...
命令1
命令2
......
2.命令列表中的每条命令必须以TAB键开始,不是空格;终极目标放在第一行
3.变量 <$(变量名) 引入变量>
objects = main.o input.o calcu.objects
main: $(object)
gcc -o main $(object)
4.赋值符
[=] 取 变量的最后变更值
[:=] 取 当前的变量值,后续给变量赋值不受影响
[?=] 取 如果前面赋值,取前面赋的值;如果前面没有赋值,取当前赋值
[+=] 取 追加值; <object = a.c object += b.c 那么object是a.c b.c>
5.模式规则
[%] 相对于通配符;在目标和依赖中%代表相同的值<a.o: a.c 为 %.o: %.c>
6.自动化变量 <让命令获取到和依赖关系中一样的对应文件>
[$@] 规则中目标的集合
[$%] 目标是函数库时表示规则中的目标成员名
[$<] 依赖文件集合中的 第一个文件
[$?] 所有比目标新的依赖 目标集合
[$^] 依赖文件集合,会去掉重复的
[$+] 所有依赖文件集合,同上,但不会去掉重复的
[$*] 目标模式中%及其之前的部分 <目标test/a.test.c 目标模式a.%.c 那么$*为test/a.test>
7.伪目标 <不需要生成,没有依赖>
(clean: <不能有重名的文件><可以声明伪目标的方式避免重名文件的影响 .PHONY:clean>)
8.条件判断
(ifeq)(ifneq)(ifdef)(ifndef)
9.Makefile函数
[]
12.Shell脚本
<将一系列的Shell命令放在一个文件里进行执行>
(#!/bin/bash)<扩展名.sh>
(read name;echo $name)(read -p "tips" age height;echo $age$height <一次读取多个输入>)
$((a+b))
(test -e filename && echo "is exist" || echo "no exist")
([ "str1" == "str2" ])
($0--$n,$@,$# <$1开始是输入的参数>)
(if 条件;then elif 条件;then else fi)
(case $a in
"a")
echo "a"
;;
"b")
echo "b"
;;
*)
echo "other"
;;
esac
)
(while do done)
<-- C盘:ARM(IMXU)裸机片 -->
1.开发环境搭建
1.开发软件的安装
1.vsftpd在Linux下安装 <服务器与本地主机之间的文件互传>
(sudo apt-get install vsftpd)(sudo vi /etc/vsftpd.conf {取消屏蔽 local_enable=YES 和 write_enable=YES})
(sudo /etc/init.d/vsftpd restart)
2.Windows下安装FTP客户端
(filezilla官网下载,有Server和Client,我们下载客户端并安装)
(连接服务器:选择文件->站点管理->新站点->协议:FTP文件传输->HOST:192.168.43.199,Linux的IP地址 ->端口:不填写 ->账户密码:同Ubuntu ->点击连接)
(如果有乱码,设置字符集:站点管理 ->字符集 ->强制UTF-8)
3.Ubuntu下NTF和SSH服务开启
(安装NTF: sudo apt-get install nfs-kernel-server portmap)(新建一个nfs文件夹 mkdir /home/jc/linux/nfs)
(sudo vi /etc/exports <在文件末尾添加一行:/home/jc/linux/nfs *(rw,sync,no_root_squash) >)
(重启服务:sudo /etc/init.d/nfs-kernel-server restart)
(安装SSH服务: sudo apt-get install openssh-server)
4.CH340驱动安装:
(连接开发板,开发板上电后,点击CH340安装文件)
5.SecureCRT安装:<类似串口调试助手>
6.PUTTY安装: <也类似串口调试助手,免费的>
2.交叉编译器的安装
<gcc是Ubuntu自带的编译器,它是针对X86架构的;开发板是ARM架构的,GCC交叉编译器在X86架构运行,编译ARM架构的代码,即编译出的执行文件在ARM芯片上运行>
(mkdir /home/jc/linux/tool <以后工具相关的文件都放这儿>)
(用filezilla将交叉编译器压缩包发送到tool目录)
(将交叉编译器包移动到 /usr/local/arm下)(解压: sudo tar -vxf xxx.tar.xz)
(添加环境变量: sudo vi /etc/profile)
(在文件最后添加路径: export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin)<reboot才生效>
(查看GCC配置是否成功: arm-linux-gnueabihf-gcc -v)
3.VS Code在Ubuntu下安装
(进入安装包所在目录: sudo dpkg -i code_1.32.3-1552686978_amd64.deb)
(将图标放到桌面: /usr/share/applications/vscode路径下右键点击复制到,选择目标为桌面)
安装插件:
[C/C++] 必须的
[C/C++ Snippers] C/C++重用代码块
[C/C++ Advanced Lint] C/C++静态检测
[Code Runner] 代码运行器
[Include AutoComplete] 自动头文件包含
[Rainbow Brackets] 彩虹花括号,有助于阅读代码
[One Dark Pro] VSCode主题
[GBKtoUTF8] 将GBK转为UTF8
[ARM] 即支持ARM汇编语法高亮显示
[Chinese(Simplified)] 中文环境
[vscode-icons] VSCode图标插件,主要是资源管理器下各个文件
[compareit] 比较插件,可以用于比较两个文件的差异
[DeviceTree] 设备树语法插件<这个ARM经常用到>
设置中文显示:
(CTRL + Shift + P打开搜索框)->(输入config)->(选择Configure Display Language)(在locale.json中修改 "locale":"zh-cn")
为工程添加头文件路径:
1.创建.vscode目录,然后打开c/c++配置器,会在.vscode下生成c_cpp_properties.json的文件
2.在"includePath"下添加头文件路径,${workspaceFolder}/bsp/
(按下ctrl+shift+P,输入C/C++:Ed)