本段介绍的是Linux环境下的工具的一些使用。
在centos下,我们使用yum来管理软件包,yum(Yellow dog Updater,Modified)是Linux下非常常用的一款包管理器。
sudo yum install ***
,这里***指的是需要安装的软件包。首先介绍一下Vi与Vim ,简单点,vim是vi的升级版。下面主要说一下Vim的几种常见模式。其中先介绍最常用的三种模式:命令模式,插入模式,底行模式。
以上三种模式的切换方式:
提出问题:Vim有多少种模式?
解答: 在底行模式下输入:help vim-modes“”
我的是环境 阿里云centos7.6 其中有:
Basic modes: 7种
Additional modes:6种
插入模式几种区别:
(命令模式适合文件内容的修改,其效率较高)
高效操作之光标操作:(在命令模式运行)
高效操作之删除:(在命令模式运行)
“x” : 删除光标所在位置的一个字符
“#x” : 删除光标所在位置向后的#个字符
“X”(shift + x):删除光标所在位置之前的一个字符
“#X”(#+shift + x):删除光标所在位置之前的#个字符
“dd”:删除光标所在行,其实是剪切操作
“#dd”:删除光标所在行向下数#行,其实是剪切操作
高效操作之复制:
“yy” :复制光标所在行到缓冲区
“#yy”:复制光标所在行向下数#行到缓冲区
“p”:将缓冲区内的字符粘贴到光标所在位置
“#p”:粘贴n次
高效后悔药之“撤销”:
“u” : 撤销,回到上次操作,多次按“u”,多次恢复
“ctrl + r” : 反撤销,撤销的恢复
查找字符:
底行模式的运行程序
底行模式分屏:
gcc的几个步骤:
gcc -E Test.c -o Test.i # 预处理
gcc -S Test.i -o test.s # 编译 (生成汇编)
gcc -c test.s -o test.o #
gcc test.o -o test # 链接,生成可执行文件
-E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面
-S 编译到汇编语言不进行汇编和链接
-c 编译到目标代码
-o 文件输出到 文件
-static 此选项对生成的文件采用静态链接
-g 生成调试信息。GNU 调试器可利用该信息。
-shared 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.
-O0 #优化级别
-O1
-O2
-O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
-w 不生成任何警告信息。
-Wall 生成所有警告信息。
在VS编程时我们会看到,一个程序发布有Debug和Release两种模式。其中在Linux中使用gcc/g++来直接生成的是Release版本。如需要调制需要生成调试版本。命令如下
gcc test.c -o test -g
如何进入GDB呢?命令
gdb test # 上面生成的test可执行文件
make是一个命令,用来执行makefile文件里面的命令;
makefile是一个文件,其写有项目的依赖结构;
假设已经有了test.c文件,Makefile应该这样写(#号是注释,供理解,写时候删除):
test:test.c #依赖关系
gcc test.c -o test # 依赖方法
其实makefile还可以添加如下模块:
test:test.c
gcc test.c -o test
.PHONY:clean #伪目标
clean:
rm -f test
注释:
.PHONY的作用
原理性操作(供理解):
仿照编译的过程来寻找依赖项逐步生成可执行文件。
test:test.o
gcc test.o -o test
test.o:test.s
gcc -c test.s -o test.o
test.s:test.i
gcc -S test.i -o test.s
test.i:test.c
gcc -E test.c -o test.i
.PHONY:clean
clean:
rm -f test.o test.s test.i test
文件结构:
下面上makefile文件:
main:main.o test.o
gcc main.o test.o -o main
main.o:main.c
gcc -c main.c
test.o:test.c
gcc -c test.c
.PHONY:clean
clean:
rm -r *.o main
将上述多文件编写的Makefile写成这个(如下),将不会再显示命令执行过程;
test:test.o
@gcc test.o -o test
test.o:test.s
@gcc -c test.s -o test.o
test.s:test.i
@gcc -S test.i -o test.s
test.i:test.c
@gcc -E test.c -o test.i
.PHONY:clean
clean:
@rm -f test.o test.s test.i test
可以将上述多文件的makefile写成如下形式,这里使用了通配符等;其实关于升级写法还有好多,比如定义变量等。
main:main.o cal.o
gcc -o $@ $^
%.o:%.c
gcc -c $<
.PHONY:clean
clean:
rm -f *.o main