Linux下C程序

前言

Linux下C语音使用的是gcc编译,学习全手动编译对理解编程过程十分有好处。

使用初步

  • 创建
1
$ vim a.c    //创建一个a.c文件
  • 编译
1
$ cc a.c
  • 查看编译后文件
1
$ ls    //新产生了一个a.out的编译文件(可执行的文件颜色是不一样的)
  • 执行
1
$ ./a.c     //执行当前目录下的a.c文件

img

说明: gcc max.c hello.c 同时编译两个源文件-o main.out 表示输出文件名为main.out(默认为a.out)

多个源文件分而治之

用include 包含源文件max.c

img

头文件与函数定义分离

1
gcc -c max.c -o max.o

img

max.o不可执行,只有是有main()函数入口的才可执行,而max.o只是编译后形成的一个类似与01代码的机器码而已
编译时要将人写的英文程序编译成机器码是消耗CPU性能的,如果编译内容较多,耗时就会比较长,而如果将一些不常改动的函数提前编译成机器码即“.o”文件,则可以大量节约编译所需时间。

但是分离后不知道静态库文件(max.o)的类型还有参数,这时可以模仿系统#include “max.h”,创建max.h,而在max.h文件中只声明函数类型,参数类型等信息,即可告诉别人该函数该如何使用。

img

在编译时依然需要加上max.o等文件以前编译,否则会出现无法找到该函数的错误

Makefile的编写

创建Makefile

1
vi makefile

编写Makefile

img

递归编译,#表注释,gcc命令前必须用Tab键,不能用空格,不然会报错

使用make命令执行,若修改后再次执行,则之前执行过生成的文件不会再被执行。

img

参考慕课网学习教程:Linux C语言编程基本原理与实践

© 2019 lvbin's Blog All Rights Reserved.
Theme by hiero