C语言-在linux中编译执行调试-学习笔记01

这篇博客介绍了如何在Linux中使用GCC编译器进行C语言程序的编译、链接,以及调试方法。内容包括GCC的基本用法,如编译、汇编和链接过程,还有GDB调试工具的使用,条件编译的技巧,以及如何通过代码跟踪进行调试。
摘要由CSDN通过智能技术生成

1. GCC编译器

  • GNU推出的多平台编译器,可以将C、C++源程序编译连接成可执行文件,支持一下后缀:
    后缀 文件类型
    .c C语言源代码
    .C/.cc/.cxx C++源代码
    .h 程序所包含的头文件
    .i 已经预处理过的C源代码文件
    .ii 已经预处理过的C++源代码文件
    .s/.S 汇编语言源代码文件
    .o 编译后的目标文件
    .a/.so 编译后的库文件
  • 编译器的主要组件:
    • 分析器:分析器将源语言程序代码转换为汇编语言,因为要从一种格式转换为另一种格式(C到汇编),所有分析器需要知道目标机器的汇编语言
    • 汇编器:汇编器将汇编语言代码转换为CPU可执行的字节码
    • 链接器:链接器将汇编器生成的单独的目标文件组成可执行的应用程序。链接器需要知道这种目标格式以便工作
    • 标准C库:核心的C函数都有一个主要的C库来提供。如果在应用程序中用到了C库中的函数,这个库就会通过链接器和源代码连接来生成最终可执行程序。
  • GCC编译过程
    1. 预处理(Pre-Processing):预处理生成.i文件,展开头文件,举例gcc -E test.c -o test.i
    2. 编译(Compiling):生成汇编.s文件,举例gcc -S test.i -o test.s
    3. 汇编(Assembling):生成二进制目标.o文件,举例gcc -c test.s -o test.o
    4. 链接(Linking):将.o文件生成可执行文件,举例gcc test.o -o test
      在这里插入图片描述

2. GCC基本用法

  • 用法:gcc [options] [filenames]
options 解释
-c 只编译,不连接成可执行文件,编译器只是由输入的.c等源代码生成.o为后缀的目标文件,通常用于编译不包括主程序的子程序文件
-o output 输出可执行文件的名称为output,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out
-g 产生符号调试工具(GNU的gdb)所必要的符号,举例gcc -g test.c -o test
-O 对程序进行优化编译、链接、采用这个选项,整个源代码会在编译、链接的过程中进行优化处理,以提高可执行文件的执行效率,但编译、链接过程相对较慢
-O2 -O更好的优化编译、链接,当然整个过程更慢
-l dirname dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数
-L dirname dirname所指出的目录加入到程序函数档案库文件的目录列表中,实在链接
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值