2017-10-28 15 views
1

dyld의 맨 페이지 (동적 링크 편집기)는 다음과 같이 말합니다.
DYLD_FALLBACK_LIBRARY_PATH ...는 콜론으로 구분 된 라이브러리가있는 디렉토리 목록입니다. 설치 경로에없는 라이브러리의 기본 위치로 사용됩니다. 기본적으로 $ (HOME)/lib :/usr/local/lib :/lib :/usr/lib로 설정됩니다.Mac OS X에서 객체 코드 라이브러리의 기본 검색 경로를 찾는 방법은 무엇입니까?

그러나 맨 페이지와 달리 DYLD_FALLBACK_LIBRARY_PATH는 Mac OS X에서 기본적으로 비어 있거나 정의되지 않습니다. 다음 bash 명령에 나와 있습니다. 다음 bash는 스크립트에 의해 계시

printenv DYLD_FALLBACK_LIBRARY_PATH 
# OR 
echo $DYLD_FALLBACK_LIBRARY_PATH 

은 비어 있거나 정의되는 사실, 모든 환경 변수를 나열 dyld의 매뉴얼 페이지에 설명했다. 리눅스 저장 라이브러리를 찾기 위해 로더에 의해 검색되는 모든 디렉토리는 맥 OSX가 /etc/ld.so.conf 부족 곳

#!/bin/bash 

while IFS=$'\n' read -r; do 
    printf %b "$REPLY = " 
    printenv "$REPLY" 
    echo 
done < <(cat << EOF 
DYLD_FRAMEWORK_PATH 
DYLD_FALLBACK_FRAMEWORK_PATH 
DYLD_LIBRARY_PATH 
DYLD_FALLBACK_LIBRARY_PATH 
DYLD_ROOT_PATH 
DYLD_SHARED_REGION 
DYLD_INSERT_LIBRARIES 
DYLD_FORCE_FLAT_NAMESPACE 
DYLD_IMAGE_SUFFIX 
DYLD_PRINT_OPTS 
DYLD_PRINT_ENV 
DYLD_PRINT_LIBRARIES 
DYLD_PRINT_LIBRARIES_POST_LAUNCH 
DYLD_BIND_AT_LAUNCH 
DYLD_NO_FIX_PREBINDING 
DYLD_DISABLE_DOFS 
DYLD_PRINT_APIS 
DYLD_PRINT_BINDINGS 
DYLD_PRINT_INITIALIZERS 
DYLD_PRINT_REBASINGS 
DYLD_PRINT_SEGMENTS 
DYLD_PRINT_STATISTICS 
DYLD_PRINT_DOFS 
DYLD_NO_PIE 
DYLD_SHARED_CACHE_DIR 
DYLD_SHARED_CACHE_DONT_VALIDATE 
EOF 
) 

또한, /etc/ld.so.conf 동안이다.

그런 다음 Mac OS X는 라이브러리의 기본 검색 경로를 어디에 저장합니까?

+0

https://stackoverflow.com/questions/7285587/what-are-the-default-search-directories-to-link-a-library-on-mac-os-x – jwdonahue

+0

가능한 복제본 인 것으로 보입니다. [Mac OS X에서 라이브러리를 링크하는 기본 검색 디렉토리는 무엇입니까?] (https : // stackoverflow.com/questions/7285587/what-are-the-default-search-directories-to-link-a-library-on-mac-os-x) – jwdonahue

+0

나는 또한 이것을 직면하고있다. DYLD_FALLBACK_LIBRARY_PATH 또는 DYLD_LIBRARY_PATH에 경로를 추가하고 싶지만 현재 값을 쿼리 할 수 ​​없습니다. 나는이 질문이 매우 타당하다고 믿는다. 오히려 나는 스스로 다른 값을 하드 코딩하는 것보다 OSx 하드 코드 된 값을 사용하려고한다. : / –

답변

0

나는 o.p입니다. 이 질문에 대한 답변 (46986246).

내 질문을 편집하거나 의견을 추가 할 수있는 충분한 권한이 없습니다. jwdonahue는 내 질문이 7285587과 중복 될 수 있다고 언급하면서 의견을 추가했습니다. 그에게 설명해 드리겠습니다.

여기는 7285587과 내 질문의 차이점입니다. 게시물 7285587은 기본 검색 경로가 무엇인지 묻습니다. 기본 검색 경로가 저장되는 위치 내가 dyld의 사람의 페이지에 기록으로 기본 검색 경로, $(HOME)/lib:/usr/local/lib:/lib:/usr/lib 것을 알고, 나는 반면에 7285587.

의 존재를 알고 있었다, 내 질문에 묻습니다. 맨 페이지에 환경 변수 DYLD_FALLBACK_LIBRARY_PATH에 저장되어 있다고 나와 있지만 DYLD_FALLBACK_LIBRARY_PATH에 저장되어 있지 않습니다. DYLD_FALLBACK_LIBRARY_PATH가 비어 있더라도 configure 스크립트 및/또는 ld은 어딘가에서 기본 검색 경로를 배우는 것처럼 보입니다. 따라서 라이브러리의 기본 검색 경로는 DYLD_FALLBACK_LIBRARY_PATH가 아닌 다른 위치에 저장되어있는 것으로 보입니다.

저장 위치를 ​​알고 싶습니다. 확인 방법은 $(HOME)/lib:/usr/local/lib:/lib:/usr/lib입니다.

그런데 Linux 용 프로그램을 Mac OS X로 이식하려고합니다. 제 질문은 Cocoa 또는 OSX 기본 프로그램과 관련이 없습니다. 따라서, 내 질문은/Library,/System/Library 또는 ~/Library와 아무 관련이 없습니다.

0

그런 다음 Mac OS X는 라이브러리의 기본 검색 경로를 어디에 저장합니까?

단순히 동적 로더 (dyld)에 하드 코딩됩니다. this code에서 "sLibraryFallbackPaths"를 검색하십시오. 그런데, 그것은 매뉴얼 페이지가 "/ lib"를 포함하는 것은 틀린 것을 보여준다. 실제로는 기본 검색 경로의 일부가 아닙니다.