关于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分步执行,找到出错的地方。 (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |