日期:2014-05-16  浏览次数:20694 次

Linux下使用extern如何写makefile
我写了个小的程序想用makeflie编译一下,但是老是出错,我直接用gcc命令行编译时可以的,如果用makefile的话就出错,不知道这个makefile该怎么写啊,一直提示我a和b未定义
[code=C/C++][/code]
//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<stdio.h>
#include"a.h"
int main()
{
  printf("%d\n",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 -o a.o b.o
a.o紧跟在-o的后面,所以gcc把a.o理解成了输出文件。


------解决方案--------------------
C/C++ code

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