Відповіді:
Правильно, але є що врахувати.
На сторінці сторінки ldd
:
ldd не працює у спільних бібліотеках.
ldd не працює з деякими надзвичайно старими програмами a.out, які були побудовані до того, як підтримка ldd була додана до версій компілятора. Якщо ви використовуєте ldd для однієї з цих програм, програма спробує запуститися з argc = 0, і результати будуть непередбачуваними.
ldd
все ще друкує 32-бітові залежності.
@Calmarius правильний, це трапляється, якщо ви вважаєте 32-бітовий exe, навіть без основних 32-бітових бібліотек.
Я намагаюся оновити свою систему (нова установка Ubuntu 16.04, з 12.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 (арка). Однак я вирішив, а не намагатися розібратися у тому, які мої залежності, я встановив вино (яке здебільшого є 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)