这是一个示例程序,我试图在下面编译这个 c 程序以了解 制作文件。
主.c
#include<stdio.h>
#include "reciprocal.h"
int main(int argc,char **argv){
int i;
i=atoi(argv[1]);
printf("The Reciprocal of %d is %f\n ",i,reciprocal(i));
return 0;
}
倒数.c
#include<stdio.h>
#include<assert.h>
#include "reciprocal.h"
double reciprocal(int i){
assert(i!=0);
return 1.0/i;
}
倒数.h
#include<stdio.h>
#ifdef __cplusplus
extern "C"{
#endif
extern double reciprocal(int i);
#ifdef __cplusplus
}
#endif
生成文件
CFLAGS:=-o2
reciprocal: reciprocal.o main.o
gcc $(CFLAGS) -o reciprocal.o main.o
main.o: main.c reciprocal.h
gcc $(CFLAGS) -c main.c -I ../include
reciprocal.o: reciprocal.c reciprocal.h
gcc $(CFLAGS) -c reciprocal.c -I ../include
clean:
rm -f *.o reciprocal
当如下编译时会抛出错误。
%制作
gcc -o2 -c reciprocal.c -I ../include gcc -o2 -c main.c -I ../include gcc -o2 -o reciprocal.o main.o main.o: In function
main': main.c:(.text+0x25): undefined reference to
reciprocal' collect2: ld returned 1 exit status make: * [reciprocal] Error 1
请帮助我了解此错误的原因。
最佳答案
更改您的 makefile:
reciprocal: reciprocal.o main.o
gcc $(CFLAGS) -o reciprocal reciprocal.o main.o
^^^^^^^^^^
或者:
reciprocal: reciprocal.o main.o
gcc $(CFLAGS) -o $@ $^
关于c - main.c :(. text+0x25): 未定义对 `reciprocal' 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9030862/