В чем разница между-rpath и-L?
gcc
и ld
предоставьте множество способов указать путь поиска для библиотек-среди них -rpath
и -L
флаги. Страницы руководства не обнаруживают различий между этими двумя флагами, фактически говоря, что каждый флаг добавляет библиотеку в путь поиска библиотеки. Но все же кажется странным, что оба флага делают ровно то же самое. Какие различия, если таковые имеются, между этими двумя вариантами?
1 ответ:
вы, должно быть, читаете некоторые устаревшие копии manpages (курсив добавлен):
- rpath=dir
Добавьте каталог в runtime путь поиска библиотек. Это используется
при связывании исполняемого файла ELF с общими объектами. Все -путь rpath
аргументы объединяются и передаются в runtime линкер, который
использует их для поиска общих объектов по адресу во время выполнения.и
- L searchdir
--библиотека-путь=searchdir
Добавьте путь searchdir в список путей, которые ld поиск
архивные библиотеки и сценарии управления ld.и
-L
говоритld
где искать библиотеки для ссылки против при связывании. Вы используете это (например) , когда вы строите против библиотек в вашем дереве сборки, которое будет помещен в обычные пути системной библиотеки с помощьюmake install
.--rpath
, С другой стороны, сохраняет этот путь внутри исполняемого файла, так что динамический компоновщик среды выполнения может найти библиотеки. Вы используете это, когда ваши библиотеки находятся вне пути поиска системной библиотеки.