18.7.19随堂笔记

1.linux常用工具
   #/vim
   拥有三种模式:插入模式、命令模式、低行模式。
   插入模式:按键"i"/"a"/"s"则会提示:--插入--
   在插入模式按下ESC则会进入命令模式
   命令模式快捷操作:
   #x是删除一个字符,
   #dd是删除一行,删除及剪切。
   eg:3x则会少三个字符,3dd则会少三行
   #p则会粘贴在光标的下一行
   其中,eg:3p则会粘贴三次。   
   #yy是复制。eg:3yy
   #u是撤销。
   注意:所有操作都会沿着光标向后或者向下进行。
    ":"则会进入低行模式,w是保存,q是退出。
    eg::wq会保存退出。
            :10则光标会跳转至第10行。
#/vim hello.c +10 = 打开"hello.c"并且光标跳转至第10行。
在命令行中输入"/"就会进行查找并标注出来,并且光标停留在第一个标注字符处,按"n"则会向下跳转标注字符。"N"则会向上查找标注字符。在低行模式下输入":noh"则会消除标注提示
(也称高亮处)。

/配置vimrc   
#/vim /etc/vimrc
     1.set autoindent 的意思是自动缩进
     2.set tabstop=4  的意思是插入模式下按下"Tab"后光标则向后退4格。
     3.set number 的意思是设置行号。(也可低行模式下:set nu /:set nonu  设置/取消设置)
     4.syntax on 的意思是关键字高亮。

#替换
  低行模式下输入":%s/ [需要替换的字符串]/[替换后的字符串]g"
  g代表全部的意思。
#打开其他文件
  低行模式下输出":sp xx.x"则会打开另一个.c文件。ctrl+wj/wk是向下/向上跳转文件。
       ctrl+ww是轮流切换文件。

命令行模式下"ZZ"则会退出光标停留处的文件。


#/gcc(gcc工具链)(已经创建hello.c源文件)
  eg1:gcc hello.c 则开始编译hello.c文件。
       则会生成a.out 可执行文件。
       再输入./a.out则会执行该文件。
  eg2:gcc hello.c -o hello
       则会生成hello可执行文件。
       再输入./hello则会执行该文件。
(注:也可以使用绝对路径: /home/hello来执行可执行文件。)

#编译的4步骤:
1.预处理,2.编译,3.汇编,4.链接。
/  预处理:处理所有以#开头的代码,包括头文件#include(头文件展开,复制替换),宏#define(作替换作用),条件编译#if 0(注释,这一部分代码不编译)。
eg:gcc -E hello.c -o hello.i(hello.i是一个文本文件)只经过预处理。
2.编译:语法检查、把C代码翻译成汇编代码
eg:gcc -S hello.i -o hello.s(hello.s是一个文本文件)只经过编译。(变成了汇编代码)
3.汇编:把汇编语言编译成二进制文件。
eg:gcc -c hello.s -o hello.o(hello.o是一个二进制文件及可执行文件)
4.链接:链接程序需要用的库文件。
eg:gcc hello.o -o hello

#eg两个文件联合编译:
已经创建了hello.c和print.c文件
hello.c:#include<stdio.h>
              int main()
              {   
                print();//为自定义函数。
               }
print.c:#include<stdio.h>
             void print()
             { 
                printf("helloworld!"\n);

输入:

gcc hello.c -E -o hello.i
gcc hello.i -S -o hello.s
gcc hello.s -c -o hello.o
gcc print.c -c -o print.o
gcc hello.o print.o -o hello     (./hello即可运行)


#/make命令和Makefile文件。
Makefile 核心:target(目标):dependency(依赖)
                       (Tab字符)command
target:通常是要产生的文件名称。
eg1:
hello:hello.c
(Tab    )gcc hello.c -o hello

eg2:
Target=hello
Object=hello.c
$(Target):$(Object)
    gcc $(Object) -o $(Target)
(注:$()表示引用)

Makefile的5个方面的内容:
具体规则,隐含规则,变量定义,文件指示,注释(#)。
eg3***:
Target=hello
Object=hello.o
$(Target):$(Object)
    gcc $(Object) -o $(Target)

hello.o:hello.c//隐含规则
    gcc -hello.c -o hello.o//隐含规则(可以省略不写)


接上一块的两个文件联合的例子:
Target =hello
Object =hello.o print.o
$(Target):$(Object)
    gcc $(Object) -o $(Target)


eg4:
Target =hello
Object =hello.o print.o
$(Target):$(Object)
    gcc $(Object) -o $(Target)
.PHONY:clean//将clean设置成一个伪目标。
clean:
    rm *.o hello


#共享文件
              cd/mnt/hgfs/share.

猜你喜欢

转载自blog.csdn.net/qq_41481342/article/details/81120732