최근에 Mach-O 파일에 대한 지식을 배우고 있습니다. 게으른 기호 & 비 게으름 기호를 배울 때 질문이옵니다. 누가 게으르거나 게으른 기호를 결정합니까? 그리고 왜? 나는 그것이 컴파일러 수 있습니다 생각심볼을 게으르거나 게으른 심볼로 만드는 것은 무엇입니까?
그렇게 ... UPDATE
: 내 질문에 대해는 A 해답을 발견, 어쩌면 진실 :
게으른가 -z 옵션에 의해 제어 바인딩은 링커에게 ld
. 이 옵션은 키워드를 인수로 사용합니다. 키워드는 (다른 사람들)을 포함한다 :
lazy
실행 파일 또는 공유 라이브러리를 생성하는 기능 (바인딩 게으른)를 호출 할 때 포인트 함수 호출 해상도를 연기 할 동적 링커에게 그것을 표시하는 대신 로드시.
now
실행 파일 또는 공유 라이브러리를 생성 할 때, 프로그램이 시작될 때, 또는 공유 라이브러리가 dlopen()
를 사용하는 대신에 함수 호출 해상도를 연기에 링크 될 때 모든 심볼을 해결하기 위해 동적 링커에게 그것을 표시 함수가 처음 호출 될 시점.
기본값은 지연 바인딩입니다. qcc
(우리가 권장하는대로)을 사용하는 경우, -W 옵션을 사용하여 -z 옵션을 ld에 전달하십시오. 예를 들어 -Wl
, -zlazy
또는 -Wl
, -znow
을 지정하십시오.
참조 : Optimizing the runtime linker
관련 질문 : Does Clang/GCC really support a delay loading feature?