回答:
正解ですが、考慮すべき点があります。
ldd
マンページから:
lddはa.out共有ライブラリでは機能しません。
lddは、lddサポートがコンパイラリリースに追加される前にビルドされた一部の非常に古いa.outプログラムでは機能しません。これらのプログラムのいずれかでlddを使用すると、プログラムはargc = 0で実行しようとし、結果は予測できません。
ldd
でも、32ビットの依存関係を出力します。
@Calmariusは正しいです。これは、32ビットのexeを検討した場合に発生します。基本的な32ビットのライブラリもありません。
私は自分のシステムをアップグレードしようとしています(12.04からUbuntu 16.04のフレッシュインストール)。古い(32ビットサービスは利用できません)avserver
を必要とする古い非推奨32ビットサービスをインストールする必要が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)を使用してすべての依存ライブラリパッケージを手動でインストールできました。しかし、依存関係を理解しようとするのではなく、wineをインストールしました(ほとんどが32ビットであり、基本的なライブラリと必要のないロードをインストールしますが、大丈夫です)。
修正するdpkg
とapt-get
私が編集した、/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)