Яка різниця між -rpath та -L?


89

gccі ldнадають багато способів вказати шлях пошуку для бібліотек - серед них -rpathі -Lпрапори. Сторінки не виявляють відмінностей між цими двома прапорами, фактично кажучи, що кожен прапор додає бібліотеку до шляху пошуку бібліотеки. Тим НЕ менше, здається дивним , що обидва прапор робить точно те ж саме. Які відмінності, якщо такі є, між цими двома варіантами?


2
Може, ти думаєш -rpath-link?
ams

Відповіді:


106

Ви, напевно, читаєте застарілі копії сторінок (підкреслено):

-rpath = dir
      Додавання каталогу до шляху пошуку бібліотеки середовища виконання . Це використовується
      при зв’язуванні виконуваного файлу ELF із спільними об’єктами. Все -rpath
      аргументи об'єднуються і передаються у час виконання линкера, який
      використовує їх , щоб знайти спільні об'єкти на час виконання.

проти

-L searchdir
--library-path = searchdir
      Додайте шлях searchdir до списку шляхів, які ld буде шукати
      архівні бібліотеки та скрипти керування ld.

Отже, -Lрозповідає, ldде шукати бібліотеки, на які можна встановити посилання. Ви використовуєте це (наприклад), коли будуєте проти бібліотек у вашому дереві збірки, які будуть розміщені в звичайних шляхах системної бібліотеки make install. --rpath, з іншого боку, зберігає цей шлях всередині виконуваного файлу, так що динамічний компонувальник часу виконання може знаходити бібліотеки. Ви використовуєте це, коли ваші бібліотеки знаходяться за межами шляху пошуку системної бібліотеки.


16
Примітки: 1. Більшу частину часу, коли потрібен -rpath=/some/weird/path, потрібен -L /some/weird/pathі йому. 2. З gccодним потрібно користуватися -Wl,-rpath=dir.
п. 'займенники' m.

4
Я досі не розумію, навіщо потрібні обидва. Я маю такий же досвід, як і nm вище. Яка інформація потрібна з бібліотеки під час побудови? Крім можливих h-файлів, причина. Але це інша річ, напевно ...
Фредрік Йоханссон

1
@FredrikJohansson Це було б розумною темою для нового запитання (звичайно, за умови, що воно ще не задане). Доступні символи потрібні, принаймні, але, ймовірно, є й інші речі.
дероберт

4
Додаткове запитання додано за адресою: stackoverflow.com/questions/28096133/…
Фредрік Йоханссон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.