Linux基础之相关编译编译工具的基础使用

文章目录

前言

vim编辑器

底行模式

命令模式:

gcc编译

gdb调试

Makefile

总结

前言

大家好,欢迎来到TheBlob的博客。时隔大半个月再次发Linux的文章,我也一度认为自己写的这些文章对各位没啥用处,因为与其说是文章,倒不如说是我的电子笔记更为合适。经过内心挣扎,决定还是继续发这些基础,希望能够帮助一些刚想入手却无从下手的小伙伴。话不多说开始献丑啦!


补充前面没有写上的基础命令

man ascii                                         查看ASCII

ctrl + C                                             强行终止

shift + 粘贴                                      从windows复制进去

在vim里面shift + k 进去看相关函数的用法

file xx                                              查看文件

readelf -a xx                                   查看可执行文件的elf

vim编辑器

插入模式

i                                                 从当前光标位置插入

I                                                 从光标行头插入

a                                                 从当前光标位置的后一个字符进行插入

A                                                 从光标行尾插入

o                                                 从光标的下一个行添加新行插入

O                                                从光标的上一行添加新行插入

底行模式

q                                                    退出

w                                                   保存

wq                                                 保存并退出

q!                                                强制退出

wq!                                              强制保存并退出

x                                                    保存并退出

w hello.c                                        将编辑内容存到hello.c上

vs hello.c                                      分屏编辑

set nonu                                        临时取消行号

%s/nihao/hello/g                           将文件全文的nihao变成hello

s/nihao/hello/g                              将光标所在行nihao变成hello

/hello                                            去文本搜索hello字符

set key=XXXXXX                         设密码

r 文件名                                        复制文件

例:                                                r test.c 将test.c的内容复制到当前文件

命令模式:

yy                                                 复制一行

nyy                                               复制n行

dd                                                 切剪/删除一行

ndd                                               剪切/删除n行

p                                                   粘贴

u                                                   撤销

gg                                                 回到文件头部

gg=G                                            自动排版(自动缩进)

G                                                  回到文件尾部

r                                                    替换一个字符

R                                                   进入到替换模式

光标定位到行尾                            shift + 4

光标定位到行头                            shift + 6

光标定位到最后一行                     hift + g (前面加 数字 可以定位到对应 行号)

定位到开头                                   gg

光标快速移动                               b w

光标上下左右                              h(左) j(下) k(上) l(右)

删除光标所在位置后的字符         x

删除光标所在位置之前的字符     X

大小写切换                                   shift + ~

多开文件操作:

vs 文件名

切换文件 ctrl ww

不退出编译程序 !gcc 文件名

不退出查看函数 !man 函数名 或 鼠标点到函数 shift + k 进入

gcc编译器

预处理 编译 汇编 链接

*预处理:

*加载头文件

*宏展开

*删除注释

*处理了条件编译

gcc -E xx.c -o xx.i

*编译:

将代码编译成为汇编代码

gcc -S xx.i -o xx.s

或者: gcc -S xx.c -o xx.s

*汇编:

将汇编代码汇编成为可重定向文件

gcc -c xx.s -o xx.o

或者 gcc -c xx.c -o xx.o

---->不会检测函数是否存在,是需声明即可

*链接:

将各个可重定向文件链接成为可执行文件(目标文件)

gcc xx.o yy.o zz.o -o xx

或者: gcc xx.c yy.c zz.c -o xx

-----> 会去检测声明的对象或者函数是否存在

补充:

gcc  -v  -Wall   -O0  -g 
	-E 		//预处理
	-S 		//编译
	-c  	//汇编 
	-o 		//生成
	-v		//详细显示
	-Wall   //详细警告
	-On     // n是个数字 优化程度
			-O0  不优化 
			-O1  
			-O2 
			数字越大,优化程度越高,编译时间越长,执行时间越短
	-g 

gdb调试

安装gdb

sudo apt-get install gdb

*编译的时候,后面要加 -g

*为什么要用?

一步一步调试,查找段错误的位置

*如何使用:

gdb 可执行文件

例子:

gdb xx

  l  :  list显示代码
  r  :  run 运行 
  start  : 启动 
  		n  : next  不进入函数,直接执行
  		s  : step  进入到每一个函数里面
  p 变量名字 : printf 变量
  	例子 :
  		p i  打印出i的值  		
  b n : breakpoint 
  		n: 行 
  	例子:
  		b 15  		
  i b : infomation breakpoint 
  	查看所有的断点
  d 编号 : delete  num
  	例子:
  		d 3   //删除编号为3的断点  		
  c  : continue 继续   一个断
  q : quit : 退出

Makefile

*> make是一个项目管理工具

*> 使用:

*》安装make

sudo apt-get install make

*》书写 Makefile 的文件

*》按照make的规则,在Makefile中书写 代码

*Makefile基本姿势:

目标 : 依赖

(tab键) 命令

*声明:

        依赖可以没有

        命令也可以没有

        目标就是我们要生成的东西

        如果不需要生成目标,称该目标为伪目标

*make的使用:

make 目标 :

        查看该目标文件是否存在,如果存在是否为最新。

        如果不存在,则去生成,如果不需要生成,则该目标为伪目标

        如果目标是整个Makefile中的第一个目标, 可以省略不写

优势:时间戳管理方式:

        如果依赖没有目标新,那么就不需要重复编译,否则谁最新就编译谁

        依赖文件必须存在,如果依赖不存在,make想方设法去生成(将其作为目标去生成)

cc -c -o xx.o xx.c

*伪目标:

        我们不需要生成该文件,如果在项目中有该文件,则该伪目标由于没有依赖,永远是最新,顾不再执行,解决方式

        .PHONY : 伪目标

* 变量赋值:

* 简单赋值

:=                       在当前行有效

* 递归赋值

=                        递归查找某变量的最后一个值

* 条件赋值

?=                      如果某变量已经定义,那么该语句无效

* 追加赋值

+=                     对某个变量进行追加操作

* 如果想隐藏命令(只执行,不显示),在命令前面加上@

echo : 打印的命令

$^ ---> 代表所有的依赖

$@ ---> 代表目标

$< ---> 代表第一个依赖

make -C 文件夹(目录)

-----》执行该 目录 下面的 Makefile下的第一个目标

make -C 文件夹(目录) 目标

-----》执行该 目录 下面的 Makefile下的目标

友情提示:

对于刚开始学的时候可以先把通讯录这种C语言初学者的小项目进行管理来练手,初步的熟悉一下Makefile的相关格式。


总结

以上就是Linux中相关工具的基本操作了,掌握了这些能够满足处于新手阶段在Linux上编写、调试C语言代码、并且还能初步了解项目管理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值