컴파일된 C++ 프로그램의 종속성 찾기

컴파일된 C++ 프로그램의 종속성 찾기

Ubuntu 13.10(32비트)에서 Qt Creator를 사용하여 C++ 프로그램을 작성하고 컴파일했습니다. Ubuntu 13.10(64비트)을 새로 설치하여 컴파일된 프로그램을 실행해 보았습니다. 하지만 실행되지 않습니다.

문제는 의존성에 있다고 생각합니다. 필요한 종속성을 어떻게 찾나요(= 해당 이름과 버전을 알 수 있나요?)

답변1

다소 조잡하지만 귀하의 경우에는 ldd 명령이 적합하다고 생각합니다.

ldd는 실행 파일의 동적으로 로드된 라이브러리 종속성을 나열하는 데 사용됩니다. ldd가 필요한 라이브러리를 찾을 수 없으면 라이브러리가 "찾을 수 없음"입니다.

예를 들어, 내가 찾은 이전 gqrx 바이너리를 사용하여 ldd를 실행하면 다음과 같은 출력이 표시됩니다.

linux-gate.so.1 (0xb7fff000)
libgnuradio-audio.so.3.6.1 => not found
libgnuradio-osmosdr.so.0 => not found
libgnuradio-core.so.3.6.1 => not found
libgruel.so.3.6.1 => not found
libfftw3f.so.3 => /usr/lib/i386-linux-gnu/libfftw3f.so.3 (0x41b5d000)
libusb-1.0.so.0 => /lib/i386-linux-gnu/libusb-1.0.so.0 (0x422ee000)
libQtGui.so.4 => /usr/lib/i386-linux-gnu/libQtGui.so.4 (0x42e47000)
libQtCore.so.4 => /usr/lib/i386-linux-gnu/libQtCore.so.4 (0xb7cde000)
libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0x411dc000)

보시다시피 libgnuradio 라이브러리를 업그레이드하고 이전 버전을 제거했습니다. ldd는 누락된 라이브러리를 "찾을 수 없음"으로 나열합니다.

행운을 빌어요!

관련 정보