2012-11-08 2 views
1

내가 궁금한 점이있다 : -g으로 오브젝트 파일을 만들 때 내 도구가 libfoo을 통해 간접적으로 의존한다는 점에서 링커가 갑자기 기호가 누락되었습니다 (libbar). 이것은 -g 없이는 발생하지 않습니다.디버그 기호로 컴파일하려면 추가 라이브러리가 필요합니까?

이 기호는 기본 매개 변수에서 libfoo의 함수 인 libbar에있는 것으로 보입니다. 그러나이 기능은 내 도구에서 사용하지 않습니다.

이 추가 종속성이 디버그 빌드에 의해 어떻게 발생하는지 궁금합니다. 이러한 디버그 심볼은 내가 사용하는 심볼뿐 아니라 모든 심볼에 대해 생성 될 수 있으며 이러한 디버그 심볼에 기본 매개 변수도 필요합니까?

이것은 Solaris의 Sun Studio 5.10에 있습니다.

+0

C에서 인라인 함수를 사용하고 있습니까? – horsh

답변

1

DEBUG 같은 것과 같은 정의를 추가 할 수도 있습니다. 그리고 이러한 정의는 다른 라이브러리 (예 : 다른 로깅 라이브러리)의 일부 여분의 심볼을 사용할 수 있습니다. 간단한 예를 들면 도움이 될 수도 있습니다.

+0

아니요, 코드는 DEBUG 또는 다른 전 처리기 마술을 사용하지 않습니다. 사실 NDEBUG는 디버그가 아닌 빌드를위한 빌드 시스템으로 설정조차되지 않습니다. – lytenyn