Відповіді:
libc.soбуло переміщено як частина багатоархівської роботи в Ubuntu 11.04. Причиною того, що не може бути симпосилання, є те, що мета мультиарха - це можливість встановити одночасно i386і amd64версії, і libcтак, щоб ви могли легше запускати 32-бітні бінарні файли в 64-бітних системах і навпаки (та інші подібні ситуації). Якщо libc6пакет містив символьне посилання на нове місце, то версії цього пакета для різних архітектур не можуть бути одночасно інстальованими (яку версію символьної посилання dpkgвибирати?), Перемагаючи всю точку вправи.
Все, на що жорсткі коди, шлях до якого libc.soпотрібно оновити, щоб нормально працювати від Ubuntu 11.04 і далі. Якщо сценарій, про який ви говорите, є частиною Ubuntu, повідомте про помилку в ньому та додайте multiarchтег.
/lib/libc.so.6є 32 або 64 бітова бібліотека.
Динамічні бібліотеки завантажуються ядром, шляхи не жорстко кодуються в програмі. Програма просто говорить "Мені потрібен libc.so.6". Потім система здійснює пошук у бібліотечних контурах, як визначено в /etc/ld.so.conf, включаючи /usr/libта /libза замовчуванням. Цей файл включає додаткові файли конфігурації в/etc/ld.so.conf.d .
У моїй 64-бітовій системі, libc.so.6яку можна знайти /lib/x86_64-linux-gnu/libc.so.6через шлях, визначений у /etc/ld.so.conf.d/x86_64-linux-gnu.conf:
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
Щоб дізнатися, яку бібліотеку завантажує програма, використовуйте lddяк у ldd /bin/bash:
linux-vdso.so.1 => (0x00007ffff1dff000)
libncurses.so.5 => /lib/libncurses.so.5 (0x00007f9d8b3b8000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9d8b1b4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9d8ae1f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9d8b61c000)
Введення символьної посилання нічого б не порушило.
Щоб отримати список каталогів, які шукаються, запустіть:
ldconfig -v -N | grep '^/'
-vвикликає показ списку файлів + каталогів, -Nне дозволяє /etc/ld.so.cacheвідтворити кеш ( ).
/usr/local/lib, але вони добре працюють, якщо з них я створюю посилання /usr/lib. Що викликає таку поведінку?
ldconfig -v -N | grep '^/'?
Просто додайте символьне посилання у файл libc.so.6 таким чином:
sudo ln -s /lib/i386-linux-gnu/libc.so.6 /lib/libc.so.6
Те саме стосується інших файлів, які відсутні в системі, і в моєму випадку у Matlab відсутній файл, проблема вже відсутня.