본문 바로가기
개발/에러해결

undefined reference to 'pow', <math.h>랑 -lm 썼는데도

by amkorousagi 2023. 5. 3.

undefined reference to `pow'

undefined reference to `pow' 에러 내용


undefined/usr/bin/ld: /tmp/ccYCeyJA.o: in function `main':
main.c:(.text+0x115): undefined reference to `pow'
collect2: error: ld returned 1 exit status

gcc/g++ 컴파일 시 #include <math.h> 와 -lm 플래그를 사용해도 위와 같은 오류가 출력됩니다.

undefined reference to `pow' 에러 원인


 

-lm 플래그의 위치가 중요하기 때문입니다.

링커는 명령줄에 지정된 순서대로 목적 파일(object)과 라이브러리를 처리하기 때문입니다.

따라서 목적 파일을 가장 나중에, 목적 파일에 연결해야하는 라이브러리는 그보다 앞에 와야 합니다. 

 

undefined reference to `pow' 해결 방법


-lm 플래그의 위치를 목적 파일 앞으로 옮깁니다.

 

 

gcc -std=c99 main.c -lm -o code
g++ -std=c++0x main.c -lm -o code

 

참고 자료


 

Link Options (Using the GNU Compiler Collection (GCC))

When the g++ program is used to link a C++ program, it normally automatically links against libstdc++. If libstdc++ is available as a shared library, and the -static option is not used, then this links against the shared version of libstdc++. That is norma

gcc.gnu.org

 

댓글