"ldd /usr/bin/firefox"가 라이브러리 파일을 나열하지 않는 이유는 무엇입니까?

"ldd /usr/bin/firefox"가 라이브러리 파일을 나열하지 않는 이유는 무엇입니까?

나는 프로그램의 종속 라이브러리를 찾는 방법에 대한 튜토리얼을 따르고 있었는데 다음과 같이 설명되었습니다.

  1. whereis firefox 설치된 폴더를 표시하고 바이너리의 전체 경로를 가져오고
  2. ldd /usr/bin/firefox 이를 ldd 명령의 인수로 사용하십시오.

튜토리얼에서는 파이어폭스를 예시로 사용했기 때문에 이를 다시 만들 것을 확신했지만 다음과 같이 입력했습니다.

답변1

실행 firefox파일은 시스템의 쉘 스크립트입니다.

일부 응용 프로그램은 현재 Unix 버전과의 더 나은 통합을 허용하거나 응용 프로그램을 실행하는 대체 방법(새로운 명령줄 옵션 세트 등)을 제공하기 위해 응용 프로그램의 실행 환경을 설정하는 래퍼 스크립트를 사용합니다. 응용 프로그램 자체는 제공되지 않습니다. 때로는 래퍼 스크립트를 사용하여 스크립트가 호출된 방식에 따라 실행할 올바른 실제 바이너리를 선택합니다.

예를 들어 MPI("메시지 전달 인터페이스") C 컴파일러는 ccMPI 헤더가 검색 경로에 있고 MPI 라이브러리가 연결되어 있는지 확인하는 래퍼 스크립트(또는 사용하도록 설정된 컴파일러) 에 지나지 않습니다. 컴파일할 때.

어떤 상황에서 어떤 바이너리를 호출하는지 보려면 이 스크립트를 살펴보세요.

답변2

$ file $(which firefox)
/usr/bin/firefox: Bourne-Again shell script, ASCII text executable

$ tail $(which firefox)
done

# Run the browser
debugging=0
if [ $debugging = 1 ]
then
  echo $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"
fi

exec $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"

관련 정보