GCC

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/Hongwei_1990/article/details/89819690
GCCGNU Compiler CollectionGNU编译器套件),是由GNU开发的编程语言编译器
gcc主要软件包如下:
序号名称功能描述
1cppC预处理器
2gccC编译器
3g++C++编译器
4gccbug创建BUG报告的Shell脚本
5gcov覆盖测试工具,用于分析在程序的哪个位置做优化效果最佳
6libgccGCC运行库
7libstdc++标准C++库
8libsupc++提供支持C++语言的函数库
C/C++程序常用文件名后缀:
序号扩展名文件内容
1.a静态库,由目标文件构成的文件库
2.cC源码,必须经过预处理
3.C .cc .cppC++源码,必须经过预处理
4.hC/C++源码的头文件
5.i.c经过预处理得到的C源码
6.ii.C .cc .cpp经过预处理得到的C++源码
7.s汇编语言文件,是.i文件编译后得到的中间文件
8.o目标文件,是编译过程得到的中间文件
9.so共享对象库,也称动态库

gcc编译过程:

hello.chello(或a.out)文件,必须历经hello.ihello.shello.o,最后才得到 hello(或a.out)文件,分别对应着预处理编译汇编链接4个步骤,整个过程如图所示:

在这里插入图片描述

序号步骤工作内容
1预处理PreprocessingC 编译器对各种预处理命令进行处理,包括
(1)头文件包含
(2)宏定义的扩展
(3)条件编译的选择
2编译Compilation预处理后的文件进行词法分析语法分析语义分析优化后,生成相应的.s汇编文件
3汇编Assemble编译后的汇编代码翻译成机器码,生成.o目标文件
4链接Linking通过链接器ld目标文件库文件链接在一起,生成可执行文件

链接可分为动态链接静态链接

序号链接描述
1动态链接使用动态库进行链接,生成的程序在执行的时候需要加载所需的动态库才能运行。
动态链接生成的程序小巧,但是必须依赖动态库,否则无法执行
2静态链接使用静态库进行链接,生成的程序包含程序运行所需要的全部库,可以直接运行,不过体积较大

gcc开发工具
编译器gcc (编译选项、静态库和动态库的制作与使用)
gcc特点:能够实现交叉编译(在当前cpu平台能够编译出在其他cpu平台运行的代码)
静态库和动态库的制作和使用:
1、库文件:只能使用保存其函数与变量,但看不到源码
2、Linux库文件分类
静态库.a:使用静态库编译程序,是在编译时加载
动态库.so:使用动态库编译程序,是在运行时加载
区别
{
一个在运行是编译,一个在运行前就编译好
静态库大占内存多
动态库易于升级
静态库运行快
}
3、Linux库文件存放位置:/lib系统所需库 /usr/lib第三方软件需要的库
4、制作静态库
1、gcc add.c
gcc sub.c 编译成.o
2、ar rcs libcal.a add.o sub.o(前缀是lib,后缀是.a)
3、gcc main.c-lcal -L/root/0923/lib(-l 确定使用静态库 -L为存放位置 -没有位置则为相对路径)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值