(GCC)라이브러리 링크 이슈 - symbol not found

apriljade·2022년 9월 5일
0

C언어

목록 보기
3/3

라이브러리 링크 이슈

동적라이브러리를 만들어서 사용하기 위해 gcc를 이용해 링크를 하고자했는데 symbol을 못찾겠다는 에러를 뿜어내어 골치가 아팠습니다. 문제는 인자 입력 순서였는데...

# 문제가 되었던 컴파일
gcc -o output -Lpath/to/so -lsomething obj0.o obj1.o 0bj2.o
 
# 해결된 컴파일
gcc -o output obj0.o obj1.o 0bj2.o -Lpath/to/so -lsomething

라이브러리의 경로와 라이브러리의 이름을 뒤에 작성하니 정상적으로 링크됩니다. ㅎㅎ....
뭐 순서 상관없이 됐으면 좋겠는데 안되네요ㅠ 추측으로는 gcc에서 인자를 파싱할 때 당연히 앞에서부터 하는데, library의 symbol에 대한 캐싱이 되지 않는 것 같습니다. object파일을 파싱할 때 symbol을 탐색할 텐데, 그때 뒤에 인자에있는 library를 탐색한다던지 하는 것 같습니다. (사실 확인은 gcc소스를 뜯어봐주세요!)

이 문제로 2시간정도는 골머리를 썩혔던 것 같은데 참 허탈한 문제 해결방법이었습니다.

0개의 댓글