加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

关于Linux下Make具体用法

发布时间:2021-11-25 17:57:19 所属栏目:PHP教程 来源:互联网
导读:源程序如下: main.c #includestdio.h #includeaddtest.h #includesubtest.h #includemultest.h int main(void) { inta = 6, b = 8; intadd,mul,sub; add= addtest(a,b); mul= multest(a,b); sub= subtest(a,b); printf(add= %d,mul = %d,sub = %d,add,mul,s

源程序如下:
 
main.c
 
#include<stdio.h>
 
#include"addtest.h"
 
#include"subtest.h"
 
#include"multest.h"
 
int main(void)
 
{
 
        inta = 6, b = 8;
 
        intadd,mul,sub;
 
        add= addtest(a,b);
 
        mul= multest(a,b);
 
        sub= subtest(a,b);
 
        printf("add= %d,mul = %d,sub = %d",add,mul,sub);
 
        return0;
 
}
 
 
 
 
 
int addtest(int a, int b);
 
 
addtest.h
 
int addtest(int a, int b);
 
 
 
addtest.c
 
#include"addtest.h"
 
int addtest(int a, int b)
 
{
 
 
 
        returna + b;
 
}
 
 
 
subtest.h
 
int subtest(int a, int b);
 
 
subtest.c
 
#include"subtest.h"
 
int subtest(int a, int b)
 
{
 
        intc = a - b;
 
        returnc;
 
}
 
 
multest.h
 
int multest(int a, int b);
 
 
 
multest.c
 
#include"multest.h"
 
int multest(int a, int b)
 
{
 
        intc = a*b;
 
        returnc;
 
}
 
Makefile书写如下:
 
 
 
# sample Makefile
 
#objects = addtest.o subtest.omultest.o
 
main:main.o addtest.o subtest.omultest.o
 
        gccmain.o addtest.o subtest.o multest.o -o main
 
main.o: addtest.h subtest.hmultest.h
 
#       gcc-c main.c
 
addtest.o: addtest.h
 
#       gcc-c addtest.c addtest.h
 
multest.o: multest.h
 
#       gcc-c multest.c multest.h
 
subtest.o:subtest.h
 
#       gcc-c subtest.c subtest.h
 
.PHONY: clean
 
clean:
 
        rmmain addtest.o subtest.o multest.o
 
 
注意:将以上文件放在同一个目录下,直接输入make命令就可以产生 subtest.o addtest.o multest.o main这四个文件,再输入./main 就可以得到结果。
 
在整个调试过程中可能会出现以下几个错误,现在列出来,希望对你有用:
 
(1)出现__gxx_personality_v0的错误。这是由于代码的源代码与后缀名不符合造成的。因为有时候我们是在visual下编写的程序,是以.cpp结尾的,当在linux下使用gcc编译时,就会出现这个错误。解决方法就是:将.cpp结尾的更改为.c结尾即可。
 
 (2)当出现'main' is up to date时(这儿的main是最终生成的文件,不是程序中main的 意思哦),说明文件没有改动,文件是最新的;而此时,我们还想再make应该如何做呢?解决方法:删除目录下.o文件  即 rm *.o.
 
 (3)当更改一个文件后,make仅仅执行更改的这个文件,其他并不执行,执行过程在make之后显示。
 
(4)重要提示: Makefile 可以理解为是gcc分步执行的一个汇总(这是我个人的理解),因为我们用gcc编译链接这个程序的过程如下:
 
编译过程
 
gcc -c addtest.c
 
gcc -c multest.c
 
gcc -c subtest.c
 
gcc -c main.c
 
链接过程
 
gcc main.o addtest.o subtest.o multest.o -o main
 
整个过程与Makefile中的过程是一致的。
 
当然这只是一种理解方式,Makefile的功能之强大又岂是gcc可比拟的。提供这种理解方式的目的就是告诉大家,当你用make操作的时候,总是出错的话,可以使用gcc分步执行,找到出错的地方。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读