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으로 컴파일이 되는 것 같다.