main.c:(.text+0x25): undefined reference to `reciprocal'

Это пример программы, я пытался скомпилировать эту нижеприведенную программу на c, чтобы узнать о make файл.

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

при компиляции, как показано ниже, выдает ошибку.

% 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 toreciprocal' collect2: ld вернул 1 статус выхода make: * [reciprocal] Error 1

Пожалуйста, помогите мне понять, в чем причина этой ошибки.

0
задан Angus 27 January 2012 в 08:52
поделиться