Это пример программы, я пытался скомпилировать эту нижеприведенную программу на c, чтобы узнать о make файл.
#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;
}
#include<stdio.h>
#include<assert.h>
#include "reciprocal.h"
double reciprocal(int i){
assert(i!=0);
return 1.0/i;
}
#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
при компиляции, как показано ниже, выдает ошибку.
% make
gcc -o2 -c reciprocal.c -I ../include gcc -o2 -c main.c -I ../include gcc -o2 -o reciprocal.o main.o main.o: В функции
main': main.c:(.text+0x25): undefined reference to
reciprocal' collect2: ld вернул 1 статус выхода make: * [reciprocal] Error 1
Пожалуйста, помогите мне понять, в чем причина этой ошибки.