【发布时间】:2013-12-06 18:42:13
【问题描述】:
我正在尝试使用此 makefile 编译我的程序,但链接器让我大惊小怪,说有重复的符号。我试过玩这个makefile,但运气不好。我的程序只有三个文件,pdp429.c、instructions.c 和 global.h。感谢任何帮助!
这是错误,(有 46 个“重复符号”错误) “重复符号 _MASK_IN 在: pdp429.o 说明.o ld:架构 x86_64 的 46 个重复符号 collect2: ld 返回 1 个退出状态 make: *** [pdp429] 错误 1"
CFLAGS = -O0 -pg -ggdb3 -Wall
all: pdp429
pdp429: pdp429.o instructions.o
gcc $(CFLAGS) pdp429.o instructions.o -o pdp429
pdp429.o: pdp429.c global.h
gcc $(CFLAGS) pdp429.c -c
instructions.o: instructions.c global.h
gcc $(CFLAGS) instructions.c -c
clean:
rm -f *.o pdp429
【问题讨论】:
-
那么实际错误是什么,这些符号实际定义在哪里?它可能根本与您的 makefile 无关
-
ld:架构 x86_64 collect2 的 46 个重复符号:ld 返回 1 个退出状态 make:*** [pdp429] 错误 1
-
根据您的编辑,其中一个重复的符号被命名为
_MASK_IN对吗?现在 - 您的 3 个文件中的哪一个是_MASK_IN定义的,以及它是如何定义的。注意:向我们展示您在其中定义_MASK_IN的文件中的整行。 -
消息很大。这是说我的目标文件中有重复的符号。我在想这是因为我在我的两个 c 文件中都包含 global.h 但我在 global.h 上设置了防护措施,例如“#ifndef GLOBAL_H...”
-
_MASKI_IN 在 global.h 中定义如下 "short MASK_IN = 0x0001;"