Linux基础----gcc工具的使用

编译C语言

我们在Linux下写好c语言源文件test.c
然后执行gcc test.c -o test把源文件test.c编译存为可执行文件test
然后用./test执行程序test
注意:1、源文件和目标文件位置可以互换 2、目标文件可省略,gcc默认生成可执行文件为a.out
虽然我们使用gcc test.c -o test这一个命令就把源文件编译成了可执行文件,但是呢,其实这中间经过了好几个步骤
在这里插入图片描述
我们可以用这一个命令完成编译,当然如果有需要我们也可以一步一步完成编译
源文件test.c
预处理:gcc -E test.c -o tets.i
编译:gcc -S test.c -o test.s //将源程序编译成汇编语言程序
汇编:gcc -c test.c -o test.o //将汇编语言翻译成机器语言
链接:gcc test.o -o test //将.o文件与库文件相链接,形成可执行文件
各种文件后缀以及其对应文件如下:
在这里插入图片描述
动态链接库:在程序执行时加载
静态链接库:在链接时期中加载
GCC默认加载动态链接库。所以这个命令gcc test.c -o test就是加载动态库
加载静态库:gcc -static test.c -o test

链接头文件

C程序中的头文件包括两种情况:
#include<a.h>
#include “b.h”
区别在于:<>是让预处理程序cpp在系统预设的头文件目录(linux下预设目录是:/usr/include)中搜寻相应的文件。
""是让预处理程序cpp在当前目录中搜寻相应的文件。
如果说你的头文件既不在当前目录,也不在预设目录,则需要指定目录
gcc指定头文件所在的目录的参数是-I
例如:
头文件my.h的内容是#define value 3 ,在/home/net/my目录下
程序a.c的内容如下 在/home/net/test目录下

#include "my.h"
#include <stdio.h>
void main()
{ 
	printf("value =%d\n",value);
}

编译时指定其头文件目录:gcc -I /home/net/my.h a.c -o a

指定库文件

编译格式:
# gcc -L 库文件所在目录 程序名称
ps:stdio.h/usr/include目录下,库文件都在/usr/lib目录下

GDB调试

使用gcc test.c -o test编译出来的可执行文件是不能用gdb调试的,因为里面没有附加调试信息
我们应该使用gcc -g test.c -o test编译文件,-g参数能为其附加调试信息
编译得到可执行文件test
使用gdb调试:# gdb test //进入调试
具体调试命令,我就省略不写了,自己搜索~
退出命令:# quit

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1900_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值