嵌入式开发第二日(man 手册、linux基本命令、vim编辑器、代码编译过程、编译工具、基本数据类型、控制流)

时间:2022-06-15 17:47:07

man 手册

       1   Executable programs or shell commands   //shell命令
       2   System calls (functions provided by the kernel)//系统调用
       3   Library calls (functions within program libraries)//库调用
       4   Special files (usually found in /dev)特殊文件,如驱动文件

       5   File formats and conventions eg /etc/passwd

是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义

       6   Games
       7   Miscellaneous  (including  macro  packages  and  conventions), e.g.
           man(7), groff(7)杂项(包括宏包和约定)
       8   System administration commands (usually only for root)系统管理用的命令

       9   Kernel routines [Non standard]内核


用法:

man -f command 显示man程序的所有手册 

例如:man -f kill 

man n command 显示指定章节的手册

        man -a command 显示所有章节的手册 

 man -w command 显示手册所在的路径  

man -aw command 结合-a参数显示所有章节的手册路径 


linux基本命令:

常用指令

ls          显示文件或目录

     -l           列出文件详细信息l(list)

     -a          列出当前目录下所有文件及目录,包括隐藏的a(all)

mkdir         创建目录

     -p           创建目录,若无父目录,则创建p(parent)

cd               切换目录

touch          创建空文件

echo            创建带有内容的文件。

cat              查看文件内容

cp                拷贝

mv               移动或重命名

rm               删除文件

     -r            递归删除,可删除子目录及文件

     -f            强制删除

find              在文件系统中搜索某文件

wc                统计文本中行数、字数、字符数

grep             在文本文件中查找某个字符串

rmdir           删除空目录

tree             树形结构显示目录,需要安装tree包

pwd              显示当前目录

ln                  创建链接文件

more、less  分页显示文本文件内容

head、tail    显示文件头、尾内容

ctrl+alt+F1  命令行全屏模式

http://www.cnblogs.com/laov/p/3541414.html


vim 编辑器


① 其它模式==>正常模式    
     按 Esc键
②正常模式==>插入模式    
    
     按 a   在光标后插入 
     按 s   删除光标所在的字符再插入
     按 o   在当前行之下新建行   

③ 正常模式==>命令模式   
      按 : (shift 加 :)
④ 正常模式==>可视模式   
      按 v 可视模式    
      

保存退出:在命令模式下,按shift+: , wq(回车)    q!(强制退出)




代码编译过程:

预处理-->编译(汇编码)-->汇编(机器码)-->链接(可执行文件)



预处理:(将include里面的内容解出来,删除注释块,处理#if end 等,添加行号,保留pragma编译指令
gcc hello.c -E -o yuchuli

编译(汇编码):(语法检查,生成相应汇编)
gcc hello.c -S -o bianyi

汇编(机器码):(将汇编程序变成机器码)
gcc hello.c -c -o huibian

链接(可执行文件,分为动态库 和静态库):
gcc hello.c -o lianjie



生成可以执行代码的快速方法:
gcc hello.c -o hello



gcc:编译工具(不可变)

Linux 下可用的编译器有 GCC、EGCS 和 PGCC,其中最常用的编译器便是 GCC。

GCC 起初是 GNU 推出的 C语言编译器,用于类 Unix 系统下的编程,所以名为 GNU C Compiler 。

随着众多*开发者的加入,GCC 发展迅速,如今已成为一个支持众多语言的编译器了,其中包括 C、C++、Ada、Object C 和 Java 等,以至于 GCC 开始被扩展为 GNU Compiler Collection ,也就是“GNU 编译器集合”的意思。


hello.c:源文件(不可变,要跟你编写的文件一致)
-o:指定
hello:可执行文件(可变的,不可以跟源文件同名)

代码运行:./hello  (./可执行文件)






linux C代码注释
//  .............. 行注释

/* ......
......代码块;            块注释
.....*/





                             1    2   2/4  4                                                8        4     8     1

基本数据类型:char short int long unsigned(char short int long )long long float doublebool(true false)

嵌入式开发第二日(man 手册、linux基本命令、vim编辑器、代码编译过程、编译工具、基本数据类型、控制流)



sizeof()     关键字,计算数据类型的长度

       因为不同系统,数据类型的长度会有所改变,但字符类型都占一个字节,因为遵循ASCII码


char:字符类型 1字节Byte = 8bit  4Mb/s 


Byte是字节数,bit是位数,在计算机中每八位为一字节,也就是1Byte=8bit,是1:8的对应关系。因此1MB/s等于8Mbit/s。因此在在书写单位时一定要注意B字母的大小写,尤其有些人还把Mbit/s简写为MB/s,此时B字母的大小真可以称为失之毫厘,谬以千里。 上面这是一般情况下MB/s与Mbit/s的对应关系,但在硬盘的数据传输率上二者就不能用一般的MB和Mbit的换算关系(1B=8bit)来进行换算。比如某款产品官方标称的内部数据传输率为683Mbit/s,此时不能简单的认为683除以8得到85.375,就认为85MB/s是该硬盘的内部数据传输率。因为在683Mbit中还包含有许多bit(位)的辅助信息,不完全是硬盘传输的数据,简单的用8来换算,将无法得到真实的内部数据传输率数值。


unsinged char (0~255)

32位系统

(1负,0正)



嵌入式开发第二日(man 手册、linux基本命令、vim编辑器、代码编译过程、编译工具、基本数据类型、控制流)

char(-128~127) -2^7 ~ 2^7-1

负数的存储:负数在系统当中以补码形式存储   

负数的反码:原码(可以理解为负数绝对值)取反  补码:反码+1


short (-2^15 ~ 2^15-1)
int  (-2^31~2^31-1)




char ch = 'W';存字符
char ch = 55;存整形数据;


具体查询 man ascii




数据的输入及输出数据类型格式


d-->整形
u-->无符号整形
f-->浮点形
c-->字符形
s-->字符串形
p-->指针类型   %p 表示指针的地址
o-->整数形(八进制)
x-->整数形(十六进制)
e-->科学计数法数据(浮点形)


转义字符

嵌入式开发第二日(man 手册、linux基本命令、vim编辑器、代码编译过程、编译工具、基本数据类型、控制流)


控制流:while  do-while for  if-else continue break switch-case goto



while
while(表达式)  //先判断再运行   i!=0

....; //代码块

while(1);  //代码停止在这里;代码一直循环,不停的重复
while(0);  //代码往下运行



表达式:如果表达式为真,则运行代码块,否则不运行

举例:1~100加法运算





do-while
do
{
...// 代码块
}while(表达式) 无论如何都会执行一次



1、用do-while来计算1到100的加法运算(修复输入时的debug)



for  循环
for(表达式1;表达式2;表达式3)

在表达式1不能定义变量
表达式1:初始化相关变量,只会执行一次 i=0,j=2,n=56;
表达式2:条件判断(为真运行循环体,否则退出循环体)
表达式3:变量变化
for(表达式1;表达式2;表达式3)==for(表达式1;表达式2;)
   {



表达式3;//是代码最后一行代码
   }

for(;;)   == while(1)       若 for里面都是空的话,相当于while
{     {

    }
}

  

for(int t;t>0;t--)     等价于        for(int t;t>0;){

{



}t--;}



运用for循环计算n的阶乘(n从键盘输入)
n! = 1x2x3x..n 



if(表达式)
{

}
else
{



}

if-else:最近原则匹配

break,continue
break-->运用switch或者是循环中(终止循环,跳出循环)
continue -->只能用循环体之中,终止本次循环,进入一次循环





swich(x)

{

 case x :    ;

}






X必须是整形 或者字符形