C

CS50 라이브러리 내의 함수 에러 (clang 으로 컴파일 안될 때)

최혜초 2020. 7. 22. 11:01

 

요즘 C를 기초부터 배우고 있다.

열심히 공부하고 코딩을 하던 중 CS 라이브러리의 함수를 사용할 때 다음과 같은 에러가 발생했다. 

 


/tmp/code-290456.o: In function `main': 
code.c:(.text+0x15): undefined reference to `get_int' 
clang-7: error: linker command failed with exit code 1 (use -v to see invocation)

 

해당 에러가 났을 때 확인해야할 것은 

 

1. 라이브러리 선언 확인

#include <cs50.h>

코드에 해당 선언이 되었는지 확인 해야한다. 

 

2. 컴파일 문제 

보통 C를 배울 때 코드 컴파일을 clang 명령어로 하게 된다. 

구글링을 해보니 clang 명령어로 컴파일을 할 경우 -lc 로 라이브러리 링크가 필요하다고 한다. 

 

clang code.c -lcs50

 

으로 컴파일 해주거나 혹은

 

make code

 

 

make 명령어를 사용해서 컴파일을 해도된다. 

make 명령어를 사용할 때는 파일 이름만 적어준다.

 

 

해당 명령어로 컴파일 했을 때

clang -fsanitize=signed-integer-overflow -fsanitize=undefined -ggdb3 -O0 -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow    code.c  -lcrypt -lcs50 -lm -o code

 

 

위와 같이 뜨는 걸 보니 자동으로 링크하여 clang으로 컴파일이 되는 것 같다.