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