gcc
и ld
предоставляет множество способов , чтобы указать путь поиска для библиотек-среди них -rpath
и -L
флагов. На страницах руководства нет различий между этими двумя флагами, фактически говоря, что каждый флаг добавляет библиотеку в путь поиска библиотеки. Тем не менее, кажется странным , что оба флаг делает точно то же самое. Каковы различия между этими двумя вариантами?
gcc
linker
shared-libraries
ld
Крейг М. Бранденбург
источник
источник
-rpath-link
?Ответы:
Вы, должно быть, читаете устаревшие копии страниц руководства (курсив мой):
vs.
Итак,
-L
сообщает,ld
где искать библиотеки для связывания при компоновке. Вы используете это (например), когда строите против библиотек в своем дереве сборки, которые будут помещены в обычные пути системных библиотек с помощьюmake install
.--rpath
, с другой стороны, сохраняет этот путь внутри исполняемого файла, чтобы динамический компоновщик среды выполнения мог найти библиотеки. Вы используете это, когда ваши библиотеки находятся за пределами пути поиска системной библиотеки.источник
-rpath=/some/weird/path
, нужно и нужно-L /some/weird/path
. 2. Сgcc
одной нужды использовать-Wl,-rpath=dir
.