当前位置: 技术问答>linux和unix
Linux下使用extern如何写makefile
来源: 互联网 发布时间:2016-08-22
本文导语: 我写了个小的程序想用makeflie编译一下,但是老是出错,我直接用gcc命令行编译时可以的,如果用makefile的话就出错,不知道这个makefile该怎么写啊,一直提示我a和b未定义 //a.c #include"a.h" int a=10; int b=20; int idle() { r...
我写了个小的程序想用makeflie编译一下,但是老是出错,我直接用gcc命令行编译时可以的,如果用makefile的话就出错,不知道这个makefile该怎么写啊,一直提示我a和b未定义
//a.c
#include"a.h"
int a=10;
int b=20;
int idle()
{
return 0;
}
//a.h
#ifndef A_G
#define A_G
extern int a;
extern int b;
int idle();
#endif
//b.c
#include
#include"a.h"
int main()
{
printf("%dn",a+b);
}
//makefile
myapp:a.o b.o
gcc -o a.o b.o
a.o:a.c a.h
gcc -c a.c
b.o:b.c a.h
gcc -c b.c
//a.c
#include"a.h"
int a=10;
int b=20;
int idle()
{
return 0;
}
//a.h
#ifndef A_G
#define A_G
extern int a;
extern int b;
int idle();
#endif
//b.c
#include
#include"a.h"
int main()
{
printf("%dn",a+b);
}
//makefile
myapp:a.o b.o
gcc -o a.o b.o
a.o:a.c a.h
gcc -c a.c
b.o:b.c a.h
gcc -c b.c
|
gcc -o myapp a.o b.o
或者
gcc a.o b.o
或者
gcc a.o b.o
|
错误在这里: gcc -o a.o b.o
a.o紧跟在-o的后面,所以gcc把a.o理解成了输出文件。
a.o紧跟在-o的后面,所以gcc把a.o理解成了输出文件。
|
myapp:a.o b.o
gcc -o myapp a.o b.o
a.o:a.c a.h
gcc -c a.c
b.o:b.c a.h
gcc -c b.c