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