vim文本编辑器:
dd 删除光标所在行 ndd 删除光标所在向下n行
d1G删除光标所在到第一行的信息
dG删除光标所在到末行的所有内容
yy 复制光标所在行
nyy复制光标所在向下n行
P:把复制内容粘贴到光标的上一行
p;把复制内容粘贴到光标的下一行
u撤销(保存后,不可撤销)
查找和替换
底行模式下:/字符串 /是往后找,?是往前找
:%s/未替换/替换后 %s/hello/Hello
:n1,n2 s/word1/word2 部分替换
:%s/word1/word2 全文换 或者n1置0,n2为$
n1,n2 w[filename] 只保存n1到n2行
w[filename] 全文保存
r[filename]把指定文件的内容插入到当前文件下
在底行模式下执行linux命令:加! 例如:!ls
区块选择:v V ctrl+v
多文档编辑:vim 文件名1 文件名2 文件名3
N/n 切换 files 显示所有打开的文件名
多窗口操作;
底行模式下: sp 文件名 ctrl+ ww/wk/wj移动光标窗口
main函数最多有3个参数
预处理有三种:文件包行命令(include)
:宏定义(define)
:条件编译
程序的编译过程:
gcc的用法:
预处理:gcc -E hello.c -o/-s hello.i
编译: gcc -S -o hello.s hello.c
汇编 :gcc -c hello.i -o hello.o 或者 gcc -c hello.c -o hell.o
链接 : gcc -o hello hell.c
gcc -s hell.i
gcc hello.c -o hell.o 或者gcc -o hello.o hello.c
优化:-O(大写的o)
优化有四个级别,在O后面加0,1,2,3;
优化时如果在变量前加上volatile,说明此变量不可优化
静态库的创建:1,gcc -c 源文件.c
2,ar rcs 静态库名(lib__.a) 目标文件1,目标文件2
静态库的使用:gcc -o file file.c -L. -lname(.是指当前文件下)
ar -t lib__.a 查看静态库中的文件名
ar -d lib__.a 文件名.o 删除库中文件
ar -dv lib__.a 文件名.o 删除提醒
ar -xv lib__.a 文件名.o 提取文件
动态库的创建:gcc -shard -fPIC -o lib__.so 源文件.c
动态库的使用:gcc 源文件.c ./lib__.so -o 可执行文件名
静态库:占用空间,提高运行速率,更新不及时
动态库:不占用空间,运行速率缓慢,更新及时
-Wall -Werror生成所有警告/错误信息 -w 不生成警告信息
工程管理器make(自动编译管理器)
编写规则:由make工具创建的目标体
: 要创建的目标体所依赖的文件
; 创建每个目标体时需要运行的命令
一个例子:
main: main.o add.o sub.o mul.o div.o
gcc -o main main.o add.o sub.o mul.o div.o
main.o:main.c
gcc -c main.c
add.o:add.c
gcc -c add.c
sub.o:sub.c
gcc -c sub.c
mul.o:mul.c
gcc -c mul.c
div.o:div.c
gcc -c div.c
.PHONY:clear 伪代码的声明
clean:
rm -f hello
伪代码的使用:make clean
增加依赖: 使用变量
(自定义变量) obj = main.o func1.o func2.o func3.o
Hello: $(obj)
gcc $(obj) -o hell
makefile中默的系统变量:$^ 代表所有的依赖文件
$a 代表目标
$< 代表第一个依赖文件
Hello :main.o func1.o func2.o
<tab > gcc main.o func1.o fun2.o -o hello
可写成:hello ;main.o func1.o func2.o
Gcc $^ -o $a
@:取消回显 @gcc -c hell.c make之后不显示命令
makefile中#字符后的内容为注释