Использование библиотек в Ubuntu
У меня есть исходный код либы, я его собрал в двух вариантах(релиз и дебаг), после сборки двух вариантах генерятся сами либы и вспомогательный софт(графический софт чтобы проверить устройства подключенные) соответственно версии релиз и дебаг тоже . После сборки библиотеки (cmake->make -jn -> make install) у меня в папках релиз и дебаг появились 3 файла: bin, lib, include. В директории bin папки релиз лежат файлы с такими же именами что и в директории bin в папке дебаг, у них только размеры разные(из за разных режимов сборок). У меня вопрос, почему дебажные либы не помечаются как в винде буквой "d" как в виндовс?
После сборки я добавил директории lib из папок релиз и дебаг в LD_LIBRARY_PATH. Когда начал проверять какие либы тянет софт( использовал lld), который лежит в папке бин, оказалось, что софт из директории bin папки релиз использует библиотеки, которые расположены в дебаге.
Как мне заставить использовать софт из директории bin папки релиз библиотеки, которые находятся в директории lib той жей папки релиз?
(Либу которую я собираю intel realsense, JC: ubuntu 20.04, g++ 9.3)
И как мне вообще заставить софт которые собран под дебаг использовать дебажные либы, а не релизные.
Я хочу сделать так, как было в Windows на Visual Studio: когда пишешь код, то дебажная версия использует только либы версии дебаг, а релизная - релиз, соответственно при отладке использовалась дебажная версия бибилиотеки.
Я новичок в использовании linux, недавно начал активно пользоваться.
Ответы (1 шт):
добавил директории lib из папок релиз и дебаг в LD_LIBRARY_PATH
Потому и показывает те, что нашлись первыми ldd.
Обычно же линковщик ищет либы в папках .,../lib/,/usr/lib... и так далее - программа должна запуститься со своими либами без модификации LD_LIBRARY_PATH.
Указать конкретно где искать библиотеки можно запустив
LD_LIBRARY_PATH=../lib/ ./program