【问题标题】:GCC multiple definition of functions linker errorGCC多重定义函数链接器错误
【发布时间】:2014-07-18 19:27:13
【问题描述】:

我正在尝试创建一个 makefile,并且能够编译所有文件,但它在链接器步骤中失败。项目中的每个函数都出现错误,它说 GCC 对“函数名称”的多重定义,然后声称它是在完全相同的位置首次定义的。比如……

project/src/provCreator.o: In function `ProcessArgs':
/home/kevin/project/src/provCreator.c:380: multiple definition of `ProcessArgs'
project/src/provCreator.o:/home/kevin/project/src/provCreator.c:380: first defined here

此错误的可能原因是什么?如何解决?

感谢您的帮助。

【问题讨论】:

  • 发布 provCreator.c 的第 380 行怎么样? ;)
  • makefile 也可能有用。听起来目标文件以某种方式被引用了两次。 (?!)

标签: c gcc makefile


【解决方案1】:

您的 makefile 有两次列出的 project/src/provCreator.c 文件。可能,具有不同的相对路径。

从你的描述看来,所有c文件似乎都列出了两次(ctrl-c/ctrl-v错误?)

【讨论】:

  • 和/或可能一个.c文件包含另一个
  • @MattMcNabb:这会以稍微不同的错误消息表现出来。
【解决方案2】:

由于 makefile 中的重复列表,在编译具有相同名称的函数或多次编译相同函数时,任何链接器都会引发多重定义错误。编译后,在链接时,链接器会混淆它必须链接哪个对象定义,因此会引发错误。

在你的情况下,请检查你的makefile,你可能已经列出了两次provCreator.c。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 2013-07-19
    • 2018-11-23
    相关资源
    最近更新 更多