Как я должен исправить библиотеки, которые не могут быть найдены из-за именования multiarch?
Я столкнулся с этой проблемой несколько раз сейчас. У меня есть программа, которая ищет библиотеку и не может ее найти, хотя она находится в /usr/lib/x86_64-linux-gnu
,
Возможно, это недостаток в том, как была написана зависимая программа. Я не знаю много об этом, но я ожидал бы, что зависимая программа укажет имя библиотеки и позволит системе искать список путей.
Может кто-нибудь объяснить вкратце, как Ubuntu ожидает, что программа с правильным поведением будет искать динамические библиотеки?
В качестве конкретного примера, последний случай включает libpcsclite.so
библиотека. Документация Oracle предполагает, что Java (зависимая программа) будет выглядеть в /usr/lib64
а также /usr/local/lib64
в моей системе - ничего из этого не существует. У меня были подобные проблемы в прошлом с не-Java зависимыми. Отчасти мой вопрос заключается в том, почему программа перечисляет такие места поиска? Есть ли механизм поиска, предоставляемый Linux, который следует использовать вместо этого?
Это проблема с Java, которая должна быть исправлена с помощью его sun.security.smartcardio.library
системное свойство или pcsclite
не в состоянии правильно поддерживать соглашения об именах для нескольких архитектур? Если последнее, я должен создавать символические ссылки вручную, или это что-то вроде инструмента ldconfig
должен исправить?
1 ответ
Я предполагаю, что проблема в том, что вы устанавливаете пакеты вне apt (apt-get). Либо используйте пакеты Ubuntu (если возможно, ppa), либо, если вы компилируете пакеты, во время компиляции используйте ./configure --help
и укажите путь к библиотеке как часть вашей конфигурации.
Смотрите также:
http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html
Со второй ссылки:
CFLAGS="-I/path/to/your/headers" LDFLAGS="-L/path/to/your/lib" ./configure --blah
Если вам нужна дополнительная помощь, вам нужно будет более конкретно указать "какую-то программу, которая ищет библиотеку и не может ее найти". Какая программа? Как вы это установили? и т.п.
Чтобы установить среду Java, отредактируйте ~/.pam_environment
, добавлять:
export JAVA_HOME=/usr/java/<your version of java>
export PATH=${PATH}:${JAVA_HOME}/bin
Для всех пользователей (системы) редактировать /etc/environment
Смотрите также: https://help.ubuntu.com/community/EnvironmentVariables