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

2
задан 8 August 2013 в 04:19

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#Persistent_environment_variables

0
ответ дан 8 August 2013 в 04:19

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

Похожие вопросы: