Я будую просту програму C ++ і хочу тимчасово замінити загальнодоступну бібліотеку, що постачається системою, більш новою її версією для розробки та тестування.
Я спробував встановити змінну LD_LIBRARY_PATH, але лінкер (ld) не вдався до:
/ usr / bin / ld: не вдається знайти -lyaml-cpp
Я очікував, що це спрацює, оскільки згідно зі сторінкою ld man:
Лінкер використовує наступні шляхи пошуку для пошуку необхідних спільних бібліотек: ... Для нативного посилання вміст змінної середовища "LD_LIBRARY_PATH" ...
Потім я спробував встановити LIBRARY_PATH, і це спрацювало.
Відповідно до посібника GCC:
Значення LIBRARY_PATH - це список точок, розділених двокрапкою, як PATH. Якщо налаштовано як власний компілятор, GCC намагається вказати таким чином каталоги під час пошуку спеціальних файлів посилання, якщо він не може їх знайти за допомогою GCC_EXEC_PREFIX. Зв'язування за допомогою GCC також використовує ці каталоги при пошуку звичайних бібліотек для параметра -l (але каталоги, вказані з -L, спочатку).
Як підказує посібник (GCC), LIBRARY_PATH працює, тому що я пов'язую з GCC.
Але ..
- Оскільки я зв’язуюсь з gcc, чому викликається ld, як підказує повідомлення про помилку?
- Який сенс у тому, щоб дві змінні слугували одній цілі? Чи є інші відмінності?