2011-05-16 5 views
1

gcc 맨 페이지에 다음과 같이 표시됩니다. "같은 종류의 여러 옵션을 사용할 때 순서가 중요합니다 (예 : -L을 두 번 이상 지정하면 지정한 순서대로 디렉토리가 검색됩니다)."링크 - 어떤 라이브러리가 포함되어 있습니까?

그러나 시스템 디렉토리 (예 : ld이 일반적으로 사용하는 디렉토리) 전에 -L 디렉토리가 검색 되었습니까?

시스템 위치와 작업 디렉토리에 동일한 이름의 라이브러리가 두 개 있고 광산을 사용하고 싶지만 내 버전이 사용되는지 확인하는 방법을 알 수 없습니다.

답변

1

"ldd/bin/your/application"을 사용해보십시오. 예 : 하나가되는 라이브러리 바이너리에 사용할 지정할 수있는 방법 3 개 가지 옵션 일반적으로

ldd `which bash` 
linux-vdso.so.1 => (0x00007fff46eda000) 
libncurses.so.5 => /lib/libncurses.so.5 (0x00007facdd618000) 
libdl.so.2 => /lib/libdl.so.2 (0x00007facdd414000) 
libc.so.6 => /lib/libc.so.6 (0x00007facdd090000) 
/lib64/ld-linux-x86-64.so.2 (0x00007facdd863000) 

이 있습니다 : 실행 파일

  • RPATH 링커 옵션을 시작하기 전에

    1. LD_LIBRARY_PATH 환경 변수 설정은 (다른 참조 내 질문/답변을이 옵션에 대해 자세히 알아 보려면
    2. 다른 모든 시스템 라이브러리에 공유 라이브러리를 추가하십시오.
  • +0

    매우 유용한 바이너리! Makefile 내에서 이것을 보장 할 수있는 방법이 있습니까? – sholsapp

    +0

    @gnucom : 예, Makefile의 ldd를 사용할 수 있습니다. 비록 이것이 좋은 아이디어가된다면 당신의 프로젝트에 달려 있습니다. –

    +0

    내가 의미하는 것은 나중에 포함 된 라이브러리를 확인하는 것과 대조적으로 시스템에 포함 된 디렉토리가 검색되도록하는 방법이 있습니까? – sholsapp

    관련 문제