概述:
Linux下C语言编程常用的编辑器是vim,编译器一般用gcc,编译链接程序用make,跟踪调试一般使用gdb,项目管理用makefile。
Gcc简介:
GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等。而 GCC 也不再单只是 GNU C 语言编译器的意思了,而是变成了 GNU Compiler Collection 也即是 GNU 编译器家族的意思了。
1. vim编辑hello.c

2. 分别查看下面gcc指令的结果
GCC交叉编译器简介:
最早为GNU C Compiler是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作之一; 支持系统,Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器, Windows也逐渐大量采用; 支持多种计算机体系结构芯片: X86、ARM、MIPS等,并已被移植到其它多种硬件平台; 其执行效率与一般的编译器相比平均效率要高20%~30%。·支持语言,最初C语言,C++、Fortran、Pascal、Objective-C、Java、Ada、Go。也包含了这些语言的库(如libstdc++、libgcj等); 现在全称: GNU Compiler Collection,GNU编译器套件;
gcc -E hello.c -o hello.i # 预处理(生成.i文件)
gcc -S hello.i -o hello.s #汇编(生成汇编代码.s文件)
gcc -c hello.s -o hello.o #编译(生成一个.obj文件)
gcc hello.o -o hello #链接(生成一个.elf文件)
此时我们可以看到分别生成了hello.c hello.i hello.s hello.o hello 5个文件。
3. 查看运行结果
输入指令
$ ./hello
我们可以看到输出“hello world!”。
4. 使用gdb调试函数调用
调试命令:
run 运行程序 **list(l) ** 查看程序 break(b) 函数名 在某函数入口处添加断点 break(b) 行号 在指定行添加断点 break(b) 文件名:行号 在指定文件的指定行添加断点 info break 查看所有设置的断点 **delete 断点编号 ** 删除断点 next(n) 单步运行程序(不进入子函数) step(s) 单步运行程序(进入子函数) continue(c) 继续运行程序 print(p) 变量名 查看指定变量值 set var=value 设置变量的值 quit(q) 退出gdb。
使用gdb调试首先生成一个sum.exe文件 ,输入命令:
$ gcc -g hello.c -o hello.exe
查看代码 list
设置断点 break
运行程序 run
查看函数 print
继续程序 continue
5. gcc过程改为makefile管理
Makefile介绍:
用Makefile文件做工程管理; 使用GNU Make工具来管理程序是每个Linux工程师必须掌握的技能; Make能够使整个程序的编译、链接只需要一个命令(make)就可以完成; Make的工作主要依赖于一个叫作Makefile的文件; Makefile文件描述了整个程序的编译,链接等规则。 其中包括:工程中的哪些源文件需要编译以及如何编译,如何最后产生我们想要得可执行文件。
最后我们可以看到运行结果,输出“ hello world!”。
参考:
(9条消息) 如何编写一个Makefile文件(手把手的教你)_Wyatt_zhai的博客-CSDN博客_makefile文件编写
[linux从零到精通] gcc和Makefile,多文件编译神器是怎么练成的,解放程序员的双手就这么简单_哔哩哔哩_bilibili