Где Ubuntu ищет общие библиотеки?

Когда я запускаю процесс, который ссылается на общую библиотеку во время выполнения (связанный при запуске процесса, не связанный позже с dlload()), где он ищет файл разделяемой библиотеки (.so), отличный от LD_LIBRARY_PATH ]?

Предыстория:

У меня есть код C ++, который я написал, который использует определенную стороннюю библиотеку. Я установил библиотеку и скомпилировал свой код на двух разных платформах, как Ubuntu, так и разных версиях, а также разных версиях gcc. Библиотека была скомпилирована и установлена ​​из источника и находится в /usr/local/lib на обеих платформах. Когда я компилирую свой код, я связываюсь с параметрами pkg-config --libs для сторонней библиотеки, и я подтвердил, что pkg-config --libs возвращает то же самое на обеих платформах.

Мой код успешно компилируется обе платформы и LD_LIBRARY_PATH не определены (или определены как empty: "") на обеих платформах. Однако, когда я запускаю его на одном платоформе, он отлично работает, а с другой - получаю эту ошибку:

error while loading shared libraries: libthrift-0.9.0.so: cannot open shared object file: No such file or directory

Как ни странно, те, которые не работают, это более новая версия Ubuntu и gcc , : /

Итак, я пытаюсь выяснить, как рабочий может найти библиотеку, чтобы я мог сделать сломанную локализацию библиотеки таким же образом. (т. е. без установки LD_LIBRARY_PATH)

Фон:

Вот мой вывод из cat /etc/ld.so.conf.d/*

... on работающая (более старая) система:

/usr/lib/mesa
/usr/lib32/mesa
/usr/lib/alsa-lib
# libc default configuration
/usr/local/lib
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu

... в сломанной (более новой) системе:

# libc default configuration
/usr/local/lib
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/mesa
1
задан 26 September 2013 в 02:33

0 ответов

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

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