GNU开发基础

本文详细介绍了GNU开发环境的基础,包括GCC的编译过程和参数分类,GDB调试工具的使用,以及makefile的编写规则。内容涵盖GCC的预处理、编译、汇编和链接阶段,GDB的断点设置、运行和调试命令,以及makefile在组织和编译项目中的作用。此外,还提及了autotools的使用和如何通过configure.ac和makefile.am文件生成Makefile。
摘要由CSDN通过智能技术生成

一、 GNU开发环境基础

GCC和GDB
GCC(GNU C Compiler)是GNU项目中符合ANSI C保准的编译系统,能够编译用C ,C++ 。Objiect C等语言编写的程序。同时GCC也是一个交叉编译器,特别适用于不同平台的嵌入式开发

gcc程序编译过程
.c源代码——>.i预编译文件——>.s汇编文件——>.o目标文件——>可执行文件
预处理 编译 汇编 链接

gcc参数分类

常用参数
gcc -S
gcc -E
gcc -o

1.编译相关参数
-c 只编译不连接,生成目标文件.o
-S只编译不汇编,生产汇编代码
-E只进行预处理
-g包含调试信息
-o filename 指定目标输出文件
-I 搜索头文件路径

2.GCC编译动态链库然后调用
**静态链接库:**编译时把库文件完全包含在成可执行文件,会使文件臃肿 .lib+name.a
生成指令:
ar crv +{.a} +[.o}
调用静态链链接库: gcc -o【file】【file.c】-L+库地址 库名与前面的/中间一定要有空格

**动态链接库:**运行时调用而不是编译时调用,发布时要可执行文件加类库文件 lib+name.so【主版本号,此版本号,发行号】
1.生产于位置无关的目标代码 gcc -fPIC -c 【.c】
gcc -shared -o .so .o

编译库时的相关参数:
-static 静态编译(gcc默认是静态编译所以一般不加 )生成静态库

-shared 1、生成动态库文件2、进行动态编译
-L +文件夹 库文件搜索中添加路径
-fPIC 生成使用相对位置无关的目标代码,然后通常用于使用GCC的-static选项从该PIC目标文件生成动态库

第一种方法:把。so文件放到/usr/lib中去
第二种方法:改变环境变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值