作者e12518166339 (耐纶)
看板LinuxDev
标题[问题] 一个简单的makefile错误
时间Sun Mar 10 16:23:02 2013
一个简单的makefile的习题,如题,错误讯息如下
a.o:(.rodata+0x0):「a」的多重定义
ab.o:(.rodata+0x0):第一次定义在此
b.o:(.rodata+0x0):「b」的多重定义
ab.o:(.rodata+0x4):第一次定义在此
collect2: 错误: ld 回传 1
make: *** [lab1] Error 1
我的makefile source code如下:
lab1:ab.o a.o b.o
gcc -o lab1 ab.o a.o b.o
ab.o:ab.c a.h b.h
gcc -c ab.c
a.o:a.c a.h
gcc -c a.c
b.o:b.c b.h
gcc -c b.c
clean:
rm -f *.o
不清楚到底是那里出错了,有人可以为我解惑吗?
另外附上相关档案
a.h : const int a=1;
b.h : const int b=2;
a.c: #include<stdio.h>
#include<stdlib.h>
#include"a.h"
void a_fun()
{
printf("a=%d\n",a);
}
b.c: #include<stdio.h>
#include<stdlib.h>
#include"b.h"
void b_fun()
{
printf("b=%d\n",b);
}
ab.c: #include<stdio.h>
#include<stdlib.h>
#include"a.h"
#include"b.h"
void main()
{
printf("a+b=%d\n",(a+b));
}
明明是一个简单的练习,可是我不晓得错在那找了找网路似乎也没人犯过这种错
可能这种错很低能,但是希望各位前辈不吝赐教
感谢大家
--
「不需要让青少年有判断力和批判力。只要给他们汽车、摩托车、美丽的明星、刺激的音
乐、流行的服饰,以及对同伴的竞争意识就行了。剥夺青少年的思考力,根植他们服从指
导者命令的服从心才是上策。让他们对批判国家、社会和指导者保持着一种动物般原始的
憎恶。让他们深信那是少数派和异端者的罪恶。让他们都有同样的想法。让他们认为想法
和大家不同的人就是国家的敌人……」
by 阿道夫·希特勒
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 27.245.238.60
1F:推 Bencrie:header file 不要指定值,把它移到别的 source file 03/10 16:59
2F:推 Bencrie:你现在的写法只要有 source 档 include a.h/b.h 就会多一 03/10 17:04
3F:→ Bencrie:份 a/b 的定义。 03/10 17:05
4F:→ alongalone:重覆include a.h,b.h.你可以去查header file如何避免 03/11 14:38
5F:→ alongalone:重覆include 03/11 14:38
6F:→ johnny1276:用ifdef? 03/13 09:10