linux基础
============
1.主要内容:
常用的linux命令(shell命令) ls cd linux网络配置 linux网络下载 gdb调试
2.相关的工作岗位:(深入的了解linux)
系统运维
linux服务器管理
常用的命令
=============
gec@ubuntu:/home$
gec 当前用户的名字
ubuntu 当前系统名字
$ 表明当前用户是个普通用户
root@ubuntu:/usr/include#
# 表明你是超级用户
1.打开新建文件
vim 文件名 (输入i或者o或者a进入到插入模式才可以输入,按下ESC,输入冒号wq保存退出)
输入冒号q!强行退出,不保存
跳到指定行: 行号gg
复制:yy复制一行 nyy复制n行
撤销:u
删除:dd ndd
粘贴:p
gedit 文件名 跟记事本差不多
vi 文件名 vim是vi的升级版
2.拷贝文件
cp 文件名 目标路径
3.切换成超级用户
sudo -s
切换成普通用户
su 普通用户的名字
临时借用超级用户的权限
sudo 正常的命令
sudo vim 1.c
4.删除文件
rm 文件名 (文件名究竟是写相对路径还是绝对路径??)
=============================
常用的linux命令
gec@ubuntu:~$
~ 表示当前用户的家目录,linux给每个用户新建同名的文件夹/home/gec
家目录里面gec可以为所欲为
1.新建目录
mkdir 目录的名字 (默认是在当前路径下新建)
mkdir 绝对路径(在指定位置新建目录)
mkdir 2020/2019/2018/2017 -p 一口气新建多个嵌套的目录
2.删除目录
rm 目录名 -rf(r表示递归,f表示强制)
3.切换路径
cd 路径名
cd .. 返回上一级目录
4.剪切,重命名文件,目录
剪切:mv 文件 目标路径
mv 目录名 目标路径
重命名:mv 原来的名字 新的名字
5.列举当前目录下的文件内容
ls
ls -l
drwxrwxr-x 3 gec gec 4096 Jan 3 17:55 2020
rwxrwxr-x -->表示权限(可读r,可写w,可执行x)
分为三组:第一组当前用户对于该文件的权限
第二组同组用户对于该文件的权限
第三组其他用户对于该文件的权限
ls -al //将隐藏文件显示出来
linux只要文件,目录名字首字符是小数点就是隐藏文件
6.linux中总共将文件划分成如下7种类型
目录 --》d
普通文件 --》-
字符设备 --》c (驱动)
块设备 --》b
套接字 --》s (网络编程)
软链接(符号链接) --》l
管道 --》p (系统编程)
7.修改文件的权限
vim 退出的时候 :wq正常保存退出
:q!野蛮强行退出,不保存的
:wq!强行保存退出
chmod 777 文件名
chmod 765 文件名
chmod 777 目录名 -R(R表示递归)
7 --》二进制111 每个二进制位对应一个权限
8.软链接和硬链接
软链接:类似于windows的快捷方式
ln 原来的文件名 软链接名 -s
ln hello.c tt -s //给hello.c生成了一个软链接叫做tt
硬链接:相当于给文件取了别名,弄了一个副本
ln 原来文件名 新的名字
出现的问题:
1.不可以在共享环境下创建软链接和硬链接(windows不支持这种文件格式)
2.目录可以创建软链接,但是不能创建硬链接
9.查看目录树
tree 目录名
10.查看文件内容
cat 文件名
11.显示当前绝对路径
pwd
12.查找文件
find 路径名 -name 文件名
例如:find / -name stdio.h //在根目录下查找stdio.h
13.搜索文件中的关键字
grep "关键字" 文件名
grep "hello" hello.c -n
14.下载工具软件,卸载工具软件
下载:sudo apt-get install 软件的名字 //在线下载
例如:sudo apt-get install vim
卸载:sudo apt-get remove 软件的名字
例如:sudo apt-get remove vim
更新软件源:
sudo apt-get update
15.打包和解压
linux中有两种常见的压缩包格式 .gz和.bz2
查看压缩包里面的内容:tar -tf 压缩包的名字
解压到指定路径: tar -zxf xxx.tar.gz -C 指定的路径
tar -jxf xxx.tar.bz2 -C 指定的路径
.gz结尾的
打包: tar -zcf xxx.tar.gz 文件1 文件2......
解压: tar -zxf xxx.tar.gz
.bz2结尾的
打包: tar -jcf xxx.tar.bz2 文件1 文件2.....
解压: tar -jxf xxx.tar.bz2
16.给命令取别名
alias c='clear'
取消别名 unalias c
17.输出命令
echo "hello"
linux网络配置
===================
1.统一修改windows,linux,开发板的ip为静态ip
windows的ip地址设置
ip地址:192.168.11.xxx (xxx是你座位对应的ip地址中的一个)
子网掩码:见笔记截图
2.配置ubuntu连接外网
测试ubuntu是否连接成功外网:ping www.baidu.com
在虚拟机设置里面:网络适配器有桥接和NAT模式
桥接 --》静态ip
NAT --》动态ip
查看ip:使用ifconfig
配置静态ip(桥接)
方法一:使用图形用户界面配置
方法二:去/etc下面修改配置文件
配置动态ip(NAT模式)
iface eth0 inet dhcp //原本静态配置ip写的static,同时将后面写ip,子网掩码,网关的语句删除
3.ubuntu根目录下几个重要的文件夹
/bin 存放可执行程序、shell命令环境变量
./hello 指行当前路径下的hello,小数点在linux中表示当前路径
或者写hello的绝对路径也能执行
将hello拷贝到/bin,那么在任意位置直接敲名字就能执行hello
/dev 存放设备的驱动文件
/etc 配置文件(网络,修改密码)
ubuntu配置开机自动运行
===================
1.原理:打开ubuntu终端(shell终端)的时候,会自动运行/etc/bash.bashrc文件
我们就可以将需要执行的程序绝对路径或者需要执行的命令直接写在这个文件的末尾
gdb调试
=============
1.前面程序出现逻辑错误
方法一:重要语句的前后加打印(函数调用,循环,条件判断)
关键性的变量
方法二:使用gdb工具调试
2.使用:
如果没有gdb,安装sudo apt-get install gdb
使用gdb调试程序,编译程序的时候必须加上 -g
常用的命令:
(1)列举原码中的内容
l 默认列举10行
l 1,20 列举第1到20行
(2)运行程序
r 从头开始执行程序,直到遇到第一个断点就停下来
继续往后执行
c 从刚才断点的位置继续执行,直到再次遇到新的断点
(3)设置断点
b 行号
(4)单步调试
n 遇到函数调用,会直接跳过函数的源码(不会进入)
s 遇到函数调用,会进入函数内部一行行执行
或者 s 3 表示一次执行3步
(5)查看断点信息
info b
删除断点
d 断点序号
(6)打印变量的值
p 变量的名字
总结:通过设置断点先缩小程序出错的范围
进一步通过单步调试明确那一句代码导致程序逻辑错误
====================================
开发板的使用
==============
1.
ARM:英国的一家半导体公司,负责设计芯片的架构,内核
华为麒麟,联发科,三星,高通,德州仪器,意法半导体
分为:cortex A系列
cortex M系列 stm32
ARM cortex A53架构的一款芯片,三星生产,芯片型号s5pv6818
生活中:智能电视,智能投影仪,智能盒子,手机
2.配置使用secure CRT
作用:帮助我们通过串口查看到开发板操作系统里面的内容(类似的软件还有很多)
配置:见截图
3.开发板的启动过程
开发板从工厂生产出来是裸机(跟单片机一样,没有操作系统的,纯硬件)
粤嵌移植了一款嵌入式linux系统到开发板
由于开发板系统资源有限:并不是所有的linux命令都有
移植好的系统由三部分构成:
(1)U-Boot -->做基础硬件初始化(cpu,内存,时钟)
(2)Kernel Image --》加载操作系统内核(内存管理,网络管理,进程,线程调度)
(3)root file system --》根文件系统
总结:启动过程先启动uboot--》启动内核--》进入到根文件系统
4.安装使用适合ARM平台的交叉工具链
linux命令:file可以查看程序属性
tar -xf xxx.tar.xz
gcc -->编译器只适合编译X86平台(intel的cpu)下的程序
arm-linux-gcc -->适合ARM平台
安装步骤:(32位和64位平台不同的交叉工具链)
第一步:解压(不要在共享里面解压)
第二步:设置环境变量
将语句 export PATH=你要设置的新路径:$PATH写入到/etc/bash.bashrc最后面(永久生效)
5.程序下载到开发板
方法一:通过串口下载到开发板(见截图)
优点:操作简单
缺点:速度慢,只适合下载小文件
方法二:通过tftp网络下载
第一步:用网线连接开发板,并配置开发板的ip,并检查是否能ping通windows
配置开发板ip: ifconfig eth0 你要配置的ip
第二步:打开tftpboot软件
点击browse按钮,设置好你要下载的文件所在的路径
第三步:在secure CRT中输入如下命令下载
tftp -r 文件名 -g 电脑的ip
补充:tftp还能将开发板里面的文件上传给windows
tftp -l 文件名 -p 电脑的ip
方法三:nfs挂载
安装 sudo apt-get install nfs-kernel-server
第一步:
配置 /etc/exports 在最后一行添加要被挂载的路径
例如: /home/gec/nfs *(rw,sync,no_subtree_check) 就是将/home/gec/nfs作为挂载目录
第二步:
重启服务器
sudo service nfs-kernel-server restart
第三步:
挂载:(开发板上执行)
mount -o nolock ubuntu的ip地址:/home/gec/nfs ./mt
顺便将/home/gec/nfs修改为777
第四步:不想使用nfs了
卸载:一定要退出mt目录才能卸载
umount ./mt
总结:网络下载tftp以及nfs都必须关闭windows所有的防火墙
6.开发板设置程序自动运行
ubuntu --》修改/etc/bash.bashrc
开发板 --》修改/etc/profile
例如:你永久配置ip,可以将ifconfig eth0 ip地址 写入到文件末尾
你不想要粤嵌登录界面,可以在./iot前面加上#注释掉
7.给开发板烧写新的系统
步骤:
第一步:重启开发板,倒数5秒、3秒之前按下任意键,进入uboot命令行
输入fastboot 回车,连接数据线
第二步:安装驱动
第三步:执行镜像文件中auto.bat文件(双击自动运行)