【发布时间】:2017-10-12 23:34:26
【问题描述】:
我正在尝试为依赖于简单文件和存储在 c 文件中的函数的简单程序创建生成文件。以下是文件:
function.c:
int random_fun(int n, int m)
{ int g;
n = n+m;
m=n/3;
g=n*m;
return g;
}
main.c:
#include <stdio.h>
#include "function.c"
int main()
{
int a, b;
printf("Enter numbers a, and b: ");
scanf("%d %d", &a, &b);
printf("Here is ur answer: %d", random_fun(a, b));
return 0;
}
这是我的makefile:
OBJS = main.o function.o
program: $(OBJS)
$(CC) -o $@ $?
clean:
rm $(OBJS) program
每当我尝试输入 make 时,都会收到以下错误:
duplicate symbol _random_fun in:
main.o
function.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see
invocation)
make: *** [program] Error 1"
不知道我做错了什么。我可以分别编译每个代码和主要工作。对于我正在处理的另一个项目,我遇到了同样的错误,所以我尝试了一个非常简单的案例,只涉及这两个 C 文件,我遇到了同样的问题。我对 makefile 还很陌生,如果我犯了一个愚蠢的错误,请多多包涵。
【问题讨论】: