Как я должен исправить библиотеки, которые не могут быть найдены из-за именования 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

http://www.linuxquestions.org/questions/linux-general-1/using-a-non-standard-library-path-when-compiling-software-781185/

Со второй ссылки:

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

Другие вопросы по тегам