嵌入式Day1--Ubuntu基本使用与C语言基础
1.环境配置
VMvare Workstation Pro(虚拟化软件)--虚拟出计算机需要的硬件
Ubuntu18(虚拟机)--安装一个操作系统(Linux)
2.Linux操作界面
图形界面和命令行,切换到命令终端(ctrl+alt+t)
切换到终端后会出现如下所示图片
2.1基本使用
ctrl+shift+ + 终端字体放大;ctrl+shift+ - 终端字体缩小;ctrl+shift+c 终端复制文本;ctrl+shift +v 终端粘贴文本;cat /etc/issue 查看操作系统的版本;tab键--自动补齐键 ,可以补齐命令或文件名
光标上下键,可以执行历史命令。
3.Linux常用shell命令
linux@ubuntu:~$ 此为命令提示符。其分别代表用户名 @ 主机名,~ 会发生变化,其表示的是一个目录。$ 表示当前用户是普通用户,#表示当前用户是系统管理员。
(https://www.runoob.com/linux/linux-command-manual.html此处推荐一个网站,此网站含有较为全面的shell命令)
3.1ls命令查看当前目录(文件夹) 下的文件名
ls -a 查看当前目录(文件夹) 下的所有文件 ,包含隐藏文件(通常是.开头的文件,或目录)。

ls -l 查看当前目录(文件夹) 下的文件 详细信息 ls -l == ll(别名,写法)。

3.2man命令的帮助 manual 手册
man 命令名,主要用于查看命令的帮助。
man ls 查看ls命令的帮助,查看命令有那些选项。


3.3创建目录与删除
3.3.1创建目录
创建目录使用的命令为:mkdir 如下图所示即为创建一个目录名为20260422的目录。
此时运用ls命令即可查看创建成功的目录

3.3.2删除目录
删除目录使用的命令为:rmdir 此时需注意目录必须为空才可删除成功。

3.4cd命令目录切换
进入目录:cd后直接跟进入的目录名,此时也可用tab健补齐目录名。
例如:cd 20260422即可进入目录20260422
返回上一层目录:cd .. //.. 代表上一层目录

cd / 进入根目录, 最高路径
3.5touch命令创建一个空白文件
创建文件:touch后直接跟文件名,创建一个空白文件,如果文件存在,则会更新时间戳。

3.6rm命令删除文件
删除文件:rm后直接跟要删除的文件名。例如rm 123表示的就是删除123这个文件。

此外,rm -fr表示删除目录,其中-f 直接删除,不询问y/n,-r 删除目录。
3.7pwd命令显示当前路径
pwd --打印当前所在的绝对路径 -printf where directory
3.8cp命令文件的复制
复制上层目录的main.c文件到本层并命名为main.c 。 需要注意的是,上层文件main.c 必须存在。

复制单个文件
cp 源文件(必须存在) 目标文件(如果不存在,创建,如果存在,覆盖)
3.9mv命令移动文件或剪切文件
把指定文件或目录,移动到指定目录下。如下图所示即为把20260422目录下的1.c文件移动至20260423目录下。

3.10cat命令查看文件的内容
cat 1.txt即为查看1.txt文件的内容。需注意的是只能查看文本文件。
4.vim的使用
1.vim filename.c
2.i键进入插入模式编写C语言代码
3.编写代码
4.esc键退回底行模式
5.底行模式命令:wq!
w:保存 q:退出 !:强制执行
5.gcc 编译器
1.gcc filename.c 编译代码生成 a.out
gcc filename.c -o filename 编译代码生成filename
2../a.out ./filename 运行代码
3.语法错误
从第一个提示错误开始修改
4.逻辑错误
gdb调试代码
5.编译流程
①预处理:处理和#相关的代码
#include<stdio.h> 展开头文件中的代码
#define MODE 0 将宏替换
#if #elif #else #endif 条件编译
gcc -E filename.c -o filename.i
②编译:将C语言代码编译成汇编代码
gcc -S filename.c -o filename.s
③汇编:将汇编代码编译成二进制代码,不可执行
gcc -c filename.c -o filename.o
④链接:把需要使用的外部库函数(别人提供的功能函数),与a.out 内部发生关联关系。
当a.out 运行起来后,直到在系统的那个位置,找到对应函数的实现。
gcc filename.c -o filename
6.C语言基础
6.1代码在计算机中的运行
1. 可执行程序(a.out)在计算机的外存(ssd, flash)中存储
2. 执行./a.out后 计算机会把a.out 中的内容(代码+数据) 加载到内存中
3. cpu从内存中读出代码+数据,对数据进行相关操作。
6.2数据单位
bit 比特位 0/1
byte 字节 1 byte = 8bit 可以表示一个英文字母
kB 千字节 1024 byte
MB 兆字节 1024*1024 byte 10^6 byte
GB 吉字节 1024*1024*1024 byte 10^9 byte
TB 太字节 1024*1024*1024*1024 byte 10^12
6.3进制转换
二进制、八进制、十六进制 转换为 十进制:
求对应位的权值再求和
十进制转换为二进制,八进制,十六进制
十进制转换为二进制
对10进制数 一直除2 ,直到商为0 。并且记录余数,逆序组成的序列就是 对应的二进制数
十进制转换为八进制
对10进制数 一直除8 ,直到商为0 。并且记录余数,逆序组成的序列就是 对应的八进制数
十进制转换为十六进制
对10进制数 一直除16 ,直到商为0 。并且记录余数,逆序组成的序列就是 对应的十六进制数
7.数据类型
7.1分类
基本类型:整型、字符型、浮点型、缺省型、泊尔型
构造类型:数组类型、结构体类型、共用体类型
指针类型
空类型
7.2整型
整数类型分为有符号类型和无符号类型(signed、unsigned),默认为有符号 (signed)类型
有符号数在内存中存放数字对应的二进制补码形式,无符号数在内存中存放数字对应的二进制形式
根据存储空间大小分为短整型short、整形int、长整型long
1.整型可以分为有符号 和无符号。
2. 整数数据在内存都是以补码形式存储的。如果是正整数的话,补码就是原码本身。如果是负数的话需要计算补码,先获得原码(先绝对值,转二进制) ,再对原码取反操作(原码中的0变1,1变0) 获得反码,最后对反码 +1 操作 。
3. sizeof 是一个关键字 , sizeof(a) , sizeof(10),sizeof(int) .获得对应类型的数据在,内存中占用的
空间是多少个字节。
short 2字节(16位) -32768 - 32767((-2^15) - (2^15 - 1))
unsigned short 2字节(16位) 0 ~ 65,535(2^16 - 1)
int 4字节(32位) -2,147,483,648 ~ 2,147,483,647
unsigned int 4字节(32位) 0 ~ 4,294,967,295
long 8字节(64位) -9,22亿亿 ~ 9,22亿亿
unsigned long 8字节(64位) 1800亿亿
7.3字符型
1.字符型变量
字符类型用char表示,本质上也是一种整数类型
char类型标识单个字符,能够从键盘中输入的都是字符(大小写英文字母、符号、数字字符)
虚拟机中可使用指令man ascii 查看ASCII码表,规定了字符和各进制数字之间的转换关系
char 1字节(8位) -128 - 127
unsigned char 1字节(8位) 0 - 255
2.字符型常量
用' '扩起来:'a' , 'A' , '!'
转义字符:'\n' , '\t' , '\\' , '\ddd'(1 - 3位八进制数) , '\xhh'(1 - 2位十六进制数)
3.字符串 常量
用" "括起来:"ABC" , "hello" , "a"
字符串末尾有一个用来标识结尾的\0字符
"hi\0" 占4字节:h i \0 \0
"hi\123bc" 占6字节:h i \123 b c \0
"hi\\\x32h" 占6字节:h i \\ \x32 h \0
7.4浮点型
1.浮点型变量
浮点数所有均为有符号类型,没有无符号类型
浮点数类型分为单精度浮点数类型(float)、双精度浮点数类型(double )
float类型存储(32位) == 符号位(1位)+ 指数位(8位)+尾数位(23位)
double类型存储(64位) == 符号位(1位)+ 指数位(11位)+尾数位(52位)
float 4字节(32位) -3.4 * 10^38 - 3.4 * 10^38
double 4字节(32位) -1.7 * 10^308 - 1.7 * 10^308
2.浮点型常量
十进制小数:123.0 , 0.123
指数形式:123e3 , 123E3
7.5常量和变量
常量:程序运行过程中值不会发生改变的量,可以直接使用
变量:在程序运行过程中值可以发生改变的量
变量名要求: 只能由字母、数字、下划线构成,不能以数字开头,变量名不要与关键字、库函数重名
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)