Я столкнулся с точно такой же проблемой при повторной установке 32-битной системы tinycore64 с 64-битным ядром.
После долгих поисков я обнаружил, почему эти комментарии имеют смысл для них обоих.
"Это было бы неплохо, но - по крайней мере, в моей среде - это не так
Похоже на работу. Загрузчик жаловался; это не просто пропустить
библиотеки, которые не соответствуют разрядности. Печально! "- струппи
"Это очень странно, не могли бы вы описать, как все провалилось?
возможно опубликовать вывод ldd? "- Адам Гуд
И почему этот комментарий может показаться верным, но на самом деле неверным.
Компоновщик игнорирует библиотеки, которые он не может прочитать.
Эта ссылка проливает свет на это.
http://www.markusbe.com/2009/09/about-running-32-bit-programs-on-64-bit-ubuntu-and-shared-libraries/
И, более конкретно, вы найдете man-страницу ld.so поучительной.
Оказывается, имя пути может иметь значение в том, что компоновщик среды выполнения ld.so выбирает в качестве библиотеки для загрузки. В моей 64-битной системе Linux у меня есть ряд нечетных имен каталогов в дополнение к стандартным. например / Библиотека / x86_64-Linux-гну. Я действительно думал, что поэкспериментирую, переместив библиотеки по этому пути в / lib64 Когда я это сделал, угадай, что случилось? внезапно мое 64-битное приложение (в данном случае brctl) не работало и жаловалось на "неправильный класс ELF". Здравствуйте ... теперь мы находимся на что-то.
Сейчас я не уверен на 100%, но ключ, похоже, связан с расширением токена rpath.
Я подозреваю, что расширение $ {PLATFORM} может иметь к этому отношение. И имя x86_64 должно быть частью этого.
В любом случае, я обнаружил, когда помещал свои 64-битные библиотеки в пути к библиотекам с именем
x86_64-linux-gnu, а не просто lib64, тогда они были предпочтительнее 32-битных, и все работало.
В вашем случае вы, вероятно, захотите сделать что-то очень похожее для 32-битных библиотек на 64. Попробуйте i386-linux-gnu.
Итак, в моем случае, когда я устанавливаю 64-битные разделяемые библиотеки в 32-битную область пользователя, я создал следующие пути:
mkdir /lib/x86_64-linux-gnu/
mkdir /usr/lib/x86_64-linux-gnu/
ln -s /lib/x86_64-linux-gnu /lib64
ln -s /usr/lib/x86_64-linux-gnu /usr/lib64
Добавьте 64-битные библиотеки в 64-битные пути, а 32-битные - только в 32-битные / lib и / usr / lib.
Затем добавьте 64-битные пути в ld.so.conf и обновите кеш с помощью ldconfig.
Теперь ваши 32-битные и 64-битные приложения будут работать без проблем.