Я создаю простую программу на С++, и я хочу временно заменить предоставленную системой общую библиотеку более новой версией для разработки и тестирования.
Я попытался установить переменную 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 вызывается, как сообщение об ошибке предполагает?
- Какой смысл с двумя переменными, обслуживающими одни и те же цель? Есть ли другие различия?