我正在尝试创建一个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
此错误的可能原因是什么?如何解决?
感谢您的帮助。
答案 0 :(得分:1)
您的makefile列出了project/src/provCreator.c
个文件两次。可能,有不同的相对路径。
从您的描述中,似乎所有c文件都列出了两次(ctrl-c / ctrl-v错误?)
答案 1 :(得分:1)
由于makefile中的重复列表,任何链接器都会抛出多重定义错误,而具有相同名称的函数或编译的函数会被多次编译。在编译之后,链接链接器时会混淆它必须链接的对象定义,因此它会抛出错误。
在您的情况下,请检查您的makefile,可能您可能已经列出了provCreator.c两次。