文档介绍:Linux 下的 C 编程基础
解决的问题:如何在Linux系统下开发C语言程序
解决问题的具体步骤:
使用vi编辑器编辑源程序
编译器编译源程序
使用gdb调试器调试程序
自动化编译(makefile文件和make工具)
使用VI编辑源程序
/*测试例子*/
#include ""    main()    {      printf("Hello,World!\n");    }
gcc编译选项与文件对应的关系
预处理
链接
编译
组译
源程序
(*.i)
(*.s)
(*.o)
可执行代码
(*.c)
-E
-S
-c
-o
处理流程
编译选项
文件类型
编译:gcc –o helloworld
运行:./helloworld
gdb调试器
解决问题:只能调试找出运行出错的程序
两个例子:1、如何找出运行出错的程序 2、如何调试运行结果与预期结果不同的程序
自动化编译(makefile+make)
Makefile规则的一般形式如下:
target:dependency dependency
(tab)<command>
:
helloworld:
gcc –o helloworld
clean:
rm –f helloworld
: 输入命令: #make 实现编译
变量的定义和使用
Makefile中的变量是用一个文本串在Makefile中定义的,这个文本串就是变量的值。只要在一行的开始写下这个变量的名字,后面跟一个“=”号,以及要设定这个变量的值即可定义变量,下面是定义变量的语法:
VARNAME=string
使用时,把变量用括号括起来,并在前面加上$符号,就可以引用变量的值:
${VARNAME}
make解释规则时,VARNAME在等式右端展开为定义它的字符串。
变量一般都在Makefile的头部定义。按照惯例,所有的Makefile变量都应该是大写。如果变量的值发生变化,就只需要在一个地方修改,从而简化了Makefile的维护。
GNU make 的一些预定义变量
$* 不包含扩展名的目标文件名称。
$+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。
$< 第一个依赖文件的名称。
$? 所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。
$@ 目标的完整名称。
$^ 所有的依赖文件,以空格分开,不包含重复的依赖文件。
$% 如果目标