Коли я запускаю процес, який посилається на спільну бібліотеку під час виконання (пов'язаний, коли процес починається, не пов’язаний пізніше dlload()), де він шукає .soінший файл спільної бібліотеки ( ) LD_LIBRARY_PATH?
Фон:
У мене є якийсь код C ++, який я написав, який використовує певну сторонній бібліотеку. Я встановив бібліотеку і скомпілював свій код на двох різних платформах, як Ubuntu, але різні версії, так і різні версії gcc. Бібліотека була зібрана та встановлена з джерела та розташована /usr/local/libна обох платформах. Коли я компілюю свій код, я пов'язую з pkg-config --libsпараметрами для сторонньої бібліотеки, і я перевірив, що pkg-config --libsповертає точно те саме на обох платформах.
Мій код успішно збирається на обох платформах і LD_LIBRARY_PATHне визначається (або визначається як порожній:) ""на обох платформах. Однак, коли я запускаю його на одній платформі, вона працює чудово, а з іншого я отримую цю помилку:
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/*
... про працюючу (старшу) систему:
/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
/usr/local/lib/libthrift-0.9.0.soале все-таки він видає помилку error while loading shared libraries: libthrift-0.9.0.so: cannot open shared object file: No such file or directory... Чи є причина, з якої він не підбиратиме каталог /etc/ld.so.conf.d/*.conf?
sudo ldconfig -vяк запропоновано нижче. Якщо це все ще не працює, оновіть своє запитання на виході ldd /path/to/your/application.
/etc/ld.so.conf.d/*.conf, але я не впевнений у цьому.