多文件操作

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语言提供很大便利,省去很多时间,提高开发效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值