문제

하려고 할 때 에서 함수를 호출 math.h, 이 링크는 다음과 같은 오류가 다음

undefined reference to sqrt

하지만 일을 해요 #include <math.h>
내가 사용하고 gcc 컴파일하고 다음과 같다:

gcc -Wall -D_GNU_SOURCE blah.c -o blah

할 수 없는 이유 링커 찾기에 대한 정의 sqrt?

도움이 되었습니까?

해결책

추가 lm 명령을 호출할 때 gcc:
gcc-벽-D_GNU_SOURCE blah.c-o blah-lm

이 말할 것이 링크를 링크와 함께 수학 라이브러리입니다.을 포함한 수학이다.h 말할 것이 컴파일러는 수학과 같은 기능을 sqrt(),존재하지만 그들은 정의 별도의 라이브러리에는 링커에 포장해야하와 함께 귀하의 실행 파일을 실행합니다.

로 FreeMemory 지적 라이브러리는 다음과 같습니다 libm.니다.에서 유닉스 시스템은 규칙에 대한 이름 지정 라이브러리 lib[blah].니다.다음 당신이 그들을 링크하는 실행 파일을 사용할-l[blah].

다른 팁

당신이 필요가를 연결하는 수학 라이브러리는 명시적으로 합니다.추가 -lm 을 깃발을 전달하는 gcc 도록 링커 알고 있는 링크 libm.a

Append -lm 의 끝에 gcc 명령어를 연결하는 수학 라이브러리:

gcc -Wall -D_GNU_SOURCE blah.c -o blah -lm

한 것을 제대로 연결되어의 순서는 컴파일러 플래그 문제!특히, -lm 위치해야 의 끝 부분에 라인.

당신이 궁금해하는 경우는 이유 math.h 라이브러리 포함되어야에서 모든 컴파일하는 경우에는 확인 이 설명 .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top