【发布时间】:2008-11-17 22:15:24
【问题描述】:
我有一个项目,它包含两个文件,main.c 和 logoff.c。当我尝试编译它们时,我得到了这个错误:
gcc -c -g -Wall main.c
gcc -c -g -Wall logoff.c
gcc -o main -g -Wall main.o logoff.o
ld: duplicate symbol _logoff in logoff.o and main.o
我在 logoff.c 中有一个名为 logoff 的函数,但我在 main.c 中搜索了文本“logoff”,但什么也没找到(甚至还没有调用该函数!)。
如果我将函数的名称更改为 log_off,它就可以工作。文件中还有第二个函数会导致同样的错误,除非它的名称也被更改。
有什么原因会发生这种情况吗?我在两个不同的系统上有这个问题。可能相关的一件事是我在另一个项目中使用了相同的 logoff.c 文件,但它没有连接到这个。
【问题讨论】:
-
出于好奇,您是否将 #include logoff.c 放入 main.c 中?
-
那是你的问题。将声明移动到像 logoff.h 这样的头文件中,它会编译得很好。
标签: c gcc ld compiler-errors duplicate-symbol