답변:
맞지만 고려해야 할 것이 있습니다.
로부터 ldd
맨 :
ldd는 a.out 공유 라이브러리에서 작동하지 않습니다.
ldd는 ldd 지원이 컴파일러 릴리스에 추가되기 전에 작성된 매우 오래된 a.out 프로그램에서는 작동하지 않습니다. 이러한 프로그램 중 하나에서 ldd를 사용하면 프로그램은 argc = 0으로 실행을 시도하고 결과를 예측할 수 없습니다.
ldd
종속성을 인쇄합니다.
@Calmarius는 정확합니다. 기본 32 비트 라이브러리조차없이 32 비트 exe를 고려하면 발생합니다.
내 시스템 (12.04에서 Ubuntu 16.04를 새로 설치)을 업그레이드하려고하는데 구식 32 비트 서비스를 설치해야하며 더 이상 avserver
필요 ia32-libs
하지 않습니다. 이 수단은 모두 dpkg
와 apt-get
불만이 (내가 할 무엇, 그것은 나를 메시지를 표시 apt-get -f install
하고, 나는 그것을 실행하면, 내가 서비스 패키지를 제거 주장), 내 서비스가 시작되지 않습니다.
이것이 32 비트 라이브러리가 누락되었음을 증명하기 위해 기존 시스템 (Ubuntu 12.04 ia32-libs
및 32 비트 라이브러리)을에 마운트 했습니다 /sda2
. 보장 /opt
에 장착 (내 32 비트 바이너리를 포함하는) /sda2/opt
내가 할 수있는, chroot /sda2
그리고 ldd
다음 의도 한대로 실행됩니다.
이 문제를 해결하기 위해 모든 종속 라이브러리 패키지를 : i386 (arch)으로 수동으로 설치할 수있었습니다. 그러나 나는 의존성이 무엇인지 알아 내려고 시도하기보다는 와인을 설치했습니다 (주로 32 비트이므로 기본 라이브러리와 실제로 필요하지 않은 더 많은 부하를 설치하지만 괜찮습니다).
해결하려면 dpkg
및 apt-get
I 편집, /var/lib/dpkg/status
내 서비스 패키지를 발견, 제거 ia32-libs
. 지금 dpkg
과 apt-get
행복
다행스럽게도 다음과 같이 ldd
행복하게보고합니다.
root@withnail:/opt/<service path># ldd avserver
linux-gate.so.1 => (0xf77a6000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf778f000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7772000)
libuuid.so.1 => /lib/i386-linux-gnu/libuuid.so.1 (0xf776b000)
libresolv.so.2 => /lib/i386-linux-gnu/libresolv.so.2 (0xf7752000)
libcrypt.so.1 => /lib/i386-linux-gnu/libcrypt.so.1 (0xf7720000)
libktssl.so.1.0.0 => /opt/<service path>/libktssl.so.1.0.0 (0xf76cb000)
libktcrypto.so.1.0.0 => /opt/<service path>/libktcrypto.so.1.0.0 (0xf756b000)
libktz.so.1 => /opt/<service path>/libktz.so.1 (0xf7558000)
librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xf754f000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf73d8000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7383000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7366000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf71af000)
/lib/ld-linux.so.2 (0x565b1000)