IT

library 옵션 위치

심량 2015. 8. 14. 12:13

여러 다른 곳에 위치한 라이브러리를 링크하다 보면 참조 순서가 중요한 경우가 있습니다.

간단한 예를 들면 gcc -lm -ldl -Lx 라고 하면 libm.a, libdl.a 그다음 x경로에서 라이브러리를 찾습니다.


그런데 저 libm이나 libdl을 그 뒤의 object 파일이 참조한다면 이것은 제대로 된 순서가 아닙니다.

가장 의존성이 높은 라이브러리를 왼쪽에 놓고 차례로 해당 의존성을 해결해가는 순서로 배치해야 합니다.


그러므로 위와 같은 경우 의존성이 존재한다면 gcc -Lx -lm -ldl 같은 순서로 바꿔줘야 unknown symbol error 같은 링커 오류를 피할 수 수 있습니다.


참조: http://stackoverflow.com/questions/45135/why-does-the-order-in-which-libraries-are-linked-sometimes-cause-errors-in-gcc