Я создаю простую программу на C ++ и хочу временно заменить поставляемую системой разделяемую библиотеку более свежей версией для разработки и тестирования.
Я попытался установить переменную LD_LIBRARY_PATH, но компоновщик (ld) потерпел неудачу с:
/ usr / bin / ld: не удается найти -lyaml-cpp
Я ожидал, что это сработает, потому что согласно man-странице ld:
Компоновщик использует следующие пути поиска для поиска необходимых общих библиотек: ... Для встроенного компоновщика содержимое переменной среды "LD_LIBRARY_PATH" ...
Затем я попытался установить LIBRARY_PATH, и это сработало.
Согласно руководству GCC:
Значение LIBRARY_PATH - это список каталогов, разделенный двоеточиями, очень похожий на PATH. При настройке в качестве собственного компилятора GCC пробует каталоги, указанные таким образом, при поиске специальных файлов компоновщика, если он не может найти их с помощью GCC_EXEC_PREFIX. Связывание с использованием GCC также использует эти каталоги при поиске обычных библиотек для опции -l (но каталоги, указанные с -L, идут первыми).
Как предполагает руководство (GCC), LIBRARY_PATH работает, потому что я связываюсь с GCC.
Но..
- Поскольку я связываюсь с gcc, почему вызывается ld, как следует из сообщения об ошибке?
- Какой смысл иметь две переменные, служащие одной цели? Есть ли другие отличия?