GCC 4.4.5가 설치된 gentoo linux에 있습니다. 컴파일하고 오류없이 해당 프로그램을 연결할 수 있습니다. gcc main.c -o main 및 ./main 명령이 결과를 올바르게 반환합니다.여러개의 C 소스 파일을 연결하십시오.
[main.c]
#include <math.h>
#include <stdio.h>
int main(void)
{
double c = ceil(2.5);
printf("The ceil of 2.5 is %f\n", c);
return 0;
}
하지만 다른 소스 파일에 CEIL의 invokation을 넣을 때 문제가 발생합니다. 명령을 사용하여
[calc.h]
#ifndef _CALC_H_
#define _CALC_H_
double myceil(double n);
#endif
[calc.c]
#include <math.h>
#include "calc.h"
double myceil(double n)
{
return ceil(n);
}
[main1.c]
#include <stdio.h>
#include "calc.h"
int main(void)
{
double c = myceil(2.5);
printf("The ceil of 2.5 is %f\n", c);
return 0;
}
GCC calc.c main1.c -o 메인 1 같은 오류가 발생합니다
는/tmp/cc6GhJvZ.o: In function `myceil':
calc.c:(.text+0x19): undefined reference to `ceil'
collect2: ld returned 1 exit status
는 왜 짜증나는 오류가 "정의되지 않은 참조는"후자의 경우에 일어 났습니까? 그리고 오류가 라이브러리 -lm을 추가하여 제거 될 수 있다는 것을 알고 있습니다. 그러나 gcc가 후자의 경우 오류를 던지는 이유를 알고 싶습니다.
이 오류는 osx 또는 RHEL 6 ... –
@ Foo에 표시되지 않습니다. 최근에 Vmware Workstation 7.0.0에서 rhel-workstation-6.0-i386-dvd.iso를 설치했지만 오류가 여전히 있습니다. – machinarium
ooh x64 서버 버전 –