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