当前位置: 技术问答>linux和unix
请教Makefile 编写
来源: 互联网 发布时间:2016-12-15
本文导语: 文件 mian.c #include"head.h" int main() { fun1(); fun2(); return 0; } 文件 head.h #ifndef M #define M #include void fun1(); void fun2(); #endif 文件 fun1.c #include"head.h" #include"test.c" void fun1() { printf("this is fun...
文件 mian.c
#include"head.h"
int main()
{
fun1();
fun2();
return 0;
}
文件 head.h
#ifndef M
#define M
#include
void fun1();
void fun2();
#endif
文件 fun1.c
#include"head.h"
#include"test.c"
void fun1()
{
printf("this is fun1 !n");
test();
}
文件 fun2.c
#include"head.h"
#include"test.c"
void fun2()
{
printf("this is fun2 !n");
test();
}
文件 test.c
#include
void test()
{
printf("this is test !n");
}
文件 Makefile
#this is a test Makefile
main:main.o fun1.o fun2.o
gcc main.o fun1.o fun2.o -o main
main.o:main.c head.h
gcc -c main.c -o main.o
fun1.o:fun1.c head.h
gcc -c fun1.c -o fun1.o
fun2.o:fun2.c head.h
gcc -c fun2.c -o fun2.o
clean:
rm -rf *.o main
这样写make的时候总是出错,说test重复定义。
请大家帮帮忙,看看有没有解决的办法。
#include"head.h"
int main()
{
fun1();
fun2();
return 0;
}
文件 head.h
#ifndef M
#define M
#include
void fun1();
void fun2();
#endif
文件 fun1.c
#include"head.h"
#include"test.c"
void fun1()
{
printf("this is fun1 !n");
test();
}
文件 fun2.c
#include"head.h"
#include"test.c"
void fun2()
{
printf("this is fun2 !n");
test();
}
文件 test.c
#include
void test()
{
printf("this is test !n");
}
文件 Makefile
#this is a test Makefile
main:main.o fun1.o fun2.o
gcc main.o fun1.o fun2.o -o main
main.o:main.c head.h
gcc -c main.c -o main.o
fun1.o:fun1.c head.h
gcc -c fun1.c -o fun1.o
fun2.o:fun2.c head.h
gcc -c fun2.c -o fun2.o
clean:
rm -rf *.o main
这样写make的时候总是出错,说test重复定义。
请大家帮帮忙,看看有没有解决的办法。
|
#this is a test Makefile
main:main.o fun1.o fun2.o test.o
gcc main.o fun1.o fun2.o test.o -o main
main.o:main.c head.h
gcc -c main.c -o main.o
fun1.o:fun1.c head.h test.h
gcc -c fun1.c -o fun1.o
fun2.o:fun2.c head.h
gcc -c fun2.c -o fun2.o
test.o: test.c test.h
gcc -c test.c -o test.o
clean:
rm -rf *.o main
main:main.o fun1.o fun2.o test.o
gcc main.o fun1.o fun2.o test.o -o main
main.o:main.c head.h
gcc -c main.c -o main.o
fun1.o:fun1.c head.h test.h
gcc -c fun1.c -o fun1.o
fun2.o:fun2.c head.h
gcc -c fun2.c -o fun2.o
test.o: test.c test.h
gcc -c test.c -o test.o
clean:
rm -rf *.o main
|
哦,理解你的意思了,你就想让他运行成功是吧
把两句#include"test.c"都删掉,在head.h里添加
void test();然后修改makefile文件
main:main.o fun1.o fun2.o test.o
gcc main.o fun1.o fun2.o test.o -o main
main.o:main.c head.h
gcc -c main.c -o main.o
fun1.o:fun1.c head.h
gcc -c fun1.c -o fun1.o
fun2.o:fun2.c head.h
gcc -c fun2.c -o fun2.o
test.o:test.c
gcc -c test.c -o test.o
clean:
rm -rf *.o main
makefile自己手动修改,不要拷贝,不然会出问题的。
没测试过,不过这样改应该可以了,有问题再问。
把两句#include"test.c"都删掉,在head.h里添加
void test();然后修改makefile文件
main:main.o fun1.o fun2.o test.o
gcc main.o fun1.o fun2.o test.o -o main
main.o:main.c head.h
gcc -c main.c -o main.o
fun1.o:fun1.c head.h
gcc -c fun1.c -o fun1.o
fun2.o:fun2.c head.h
gcc -c fun2.c -o fun2.o
test.o:test.c
gcc -c test.c -o test.o
clean:
rm -rf *.o main
makefile自己手动修改,不要拷贝,不然会出问题的。
没测试过,不过这样改应该可以了,有问题再问。