2011-03-27 4 views
2

-l 옵션을 사용하여 lib 이름을 전달하면 GCC는/usr/lib에서 최상의 lib에 링크합니다. 두 가지 모두 존재할 때 정적 버전보다 동적 버전이 선택되었다고 생각합니다.바이너리 라이브러리의 디버그 버전에 연결하는 방법

그러나 동일한 lib의 디버그 버전도 있습니다. 디버그 버전은 최적화를 해제하고 추가 런타임 검사를 사용하여 컴파일해야합니다. 나는 패키지 매니저 (Ubuntu의 Synaptic)에서 dbg 버전이 실제로 내 컴퓨터에 설치되어 있는지 확인했지만 libs가 어디에 있고 어떻게 링크되어 있는지 완전히 알지 못했습니다.

힌트를 주시면 감사하겠습니다. 감사.

답변

2

를 사용하여 컴파일하는 방법 컴파일시에 -l 옵션 대신 사용하십시오. 예 :

gcc -o <output_file> *.c <libdebug_file>.so 
+0

GCC의 기본 선택을 피하는 유일한 방법은 lib 이름을 아는 것 같습니다. – pic11

0

디버그 라이브러리의 이름을 알고있는 경우 표준 것보다는 다른 경로에 해당 라이브러리를 이동에 대해 직접 수 있으며, -l (라이브러리 이름 옵션)와 g ++

+0

시스템 라이브러리를 이동하지 마십시오. 어떤 libs도 이동할지 모르겠습니다. – pic11

+0

나쁜 생각. 이렇게하면 해당 라이브러리를 사용하는 시스템의 모든 앱이 디버그 프로그램으로 전환됩니다. 그러지 마. – Mat

관련 문제