max.c
int max(int a,int b) {
if(a>b){
return a;
}else{
return b;
}
}
hello.c
#include<stdio.h>
#include "max.c"
int main()
{
int a1=33;
int a2=21;
int maxNum=max(a1,a2);
printf("the max value is %d\n",maxNum);
return 0;
}
以上程序相当于在hello.c中直接把max.c中的文件直接拷贝过来,所以编译时也等价于:
#include<stdio.h>
int max(int a,int b) {
if(a>b){
return a;
}else{
return b;
}
}
int main()
{
int a1=33;
int a2=21;
int maxNum=max(a1,a2);
printf("the max value is %d\n",maxNum);
return 0;
}
所以如果在多个函数的情况下编译时间仍然较长,所以我们把一些不需要改动的函数提前编译成机器指令,采用 gcc -c max.c -o max.o 生成一个max.o目标代码文件(用cat max.o 查看是机器码), gcc -c min.c -o min.o 生成min.o文件,起一个静态库的作用,然后为了让读者知道有哪些函数,我们需要在当前目录下建立max.h,min.h文件
max.h
int max (int a,int b);
min.h
int min(int a,int b);
用vi编辑器编辑生成以下代码:
#include<stdio.h>
#include "max.h"
#include "min.h"
int main()
{
int a1=33;
int a2=21;
int maxNum=max(a1,a2);
int minNum=min(a1,a2);
printf("the max value is %d\n,the min value is %d\n",maxNum,minNum);
return 0;
}
最后用命令 gcc max.o min.o hello.c
进行链接生成a.out文件.然后用 ./a.out查看运行结果。
Makefile的编写与使用
Makefile的编写与使用简化了程序员编译指令,具体步骤如下:
1.使用make -v 查看linux系统是否有 make,如果没有则 sudo apt-get install make 命令进行安装。
2. Makefile的编写(M大写)
vi Makefile
(以下均在采用 rm *.o 删除所有以.o的文件后 ) 未顶格处都必须只敲一个Tab键,否则会报错,max.o依赖max.c 的编译 gcc -c max.c 等价于gcc -c max.c -o max.o, 下同
#this is make file 注释
hello.out:max.o min.o hello.c
gcc max.o min.o hello.c -o hello.out
max.o:max.c
gcc -c max.c
min.o:min.c
gcc -c min.c
3.输入make指令,系统将会编译Makefile中的所有指令,编译过后,查看相关结果,如果还需要修改Mikefile的指令代码,再次执行make指令时,只编译修改过的代码块,如果没有修改,系统会提示Mikefile文件没有更新,不会编译。这将为大型C语言提供很大便利,省去很多时间,提高开发效率。