문제
하려고 할 때 에서 함수를 호출 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
라이브러리 포함되어야에서 모든 컴파일하는 경우에는 확인 이 설명 기.
제휴하지 않습니다 StackOverflow