간혹 리눅스 터미널 환경에서 C언어로 코드를 작성하다보면, 뜻밖의 상황에서 에러를 맞이하게 된다. 비록 치명적이지 않고 간단한 에러임에도 불구하고, 매번 발생 원인을 잊고서 구글에 검색하는 경우가 잦은데, 이런 상황을 모면하고자 생기는 문제점을 기록하려한다. 간단한 문제인 만큼 추후에 기억하기 쉽고, 내 블로그를 참조할 누군가를 위해 간단하고 간략하게 작성할 참이다.



gcc 컴파일 시 <math.h> 헤더 파일 링크가 안 될 경우


 


 코드상에 별다른 문제가 없음에도 헤더파일 인식이 안되서, 위와 같은 에러가 발생하는 경우가 있다. 필자의 경우 <math.h>를 포함시켰는데도 불구하고 sqrt 함수가 정의되지 않았다고 나온다. 이는 <math.h> 헤더 파일에만 해당하는 경우는 아니므로, 정상적으로 코드 내 헤더 파일을 include 시켰음에도 특정 라이브러리 호출이 안된다면, 아래와 같은 명령어로 해결하자.


gcc -o "filename" "filename.c" -lm


 동일한 gcc 컴파일 명령어 뒤에 -lm을 추가함으로써 해결할 수 있다. gcc 컴파일러는 디폴트로 mathematical 라이브러리를 링크할 당시 포함시키지 않는다고 한다. 따라서 -lm 명령어를 통해 추가해줘야 한다.