unix编程艺术

Unix环境编程工具(1)-GCC

随着项目越来越大,输入gcc命令生成程序会变得越来越复杂。make命令可以自动执行编译和链接过程。通过make,我们可以指定项目的文件以及如何将它们放在一起。Make只能在链接前编译已更改的文件,以加快编译过程。Make也有一些复杂的功能,但是对于简单的任务,它的用法是简单的。

运行 make

进入项目目录,然后在shell中运行make命令。make会在当前目录下找到一个名为makefile或者Makefile的文件,里面包含了构建程序的指令。如果在构建目标时出现问题,将向标准输出输出一条错误消息。

Makefile

Makefile定义变量和依赖关系。变量以字符串的形式命名,就像C语言的预处理程序一样。变量通常用于指示搜索的目录、编译器选项、运行程序的名称等。变量不是预声明的,所以需要“=”,如下图所示。

CC = gcc用gcc的值创建一个名为CC的变量。变量名区分大小写,按照惯例是大写的。

虽然我们可以定义自己的变量名,但有些变量名一般是标准的,所以按照默认规则使用更容易,比如CC、CFLAGS和LDFLAGS。

Cc:C编译器的名字,默认为CC或gcc。

CFLAGS:传递给C编译器的一组选项,对所有源文件都有效。一般用于设置引用路径(-I选项)或生成调试版本(-g选项)。

LDFLAGS:传递给链接器的一组选项。例如指定库文件(-l选项)或库的搜索路径(-L选项)。

cflags =-g-I/usr/class/cs 107/include $(cc)$(cflags)-c binky . c Makefile的第二部分是依赖/构建规则。规则解释了如何从一些文件生成目标文件。除了第一条规则是默认规则,以及make命令不带参数时使用的规则,其他规则的顺序变化不会影响结果。

一个规则包含两行:依赖行和命令行,例如

binky . o:binky . c binky . hak bar . h tab $(cc)$(cflags)-c binky . c对于标准编译,命令行可以省略,make会使用默认规则根据文件后缀进行编译,比如。C是C语言。f是fortran。默认的C文件编译如下

$(CC) $(CFLAGS) -c源文件

这样的规则很常见,大多数修改只需要改变CFLAGS变量。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

发表回复

登录后才能评论