Qual è la differenza tra -rpath e -L?


89

gcce ldforniscono molti modi per specificare un percorso di ricerca per le librerie, tra cui i flag -rpathe -L. Le manpage non rivelano differenze tra questi due flag, dicendo in effetti ogni flag aggiunge una libreria al percorso di ricerca della libreria. Eppure sembra strano che entrambe le bandiere facciano esattamente la stessa cosa. Quali sono le eventuali differenze tra queste due opzioni?


2
Forse stai pensando -rpath-link?
AMS

Risposte:


106

Devi leggere alcune copie obsolete delle manpage (enfasi aggiunta):

-rpath = dir
      Aggiunge una directory al percorso di ricerca della libreria di runtime . Viene utilizzato
      quando si collega un eseguibile ELF con oggetti condivisi. Tutti gli
      argomenti -rpath vengono concatenati e passati al linker di runtime , che
      li utilizza per individuare gli oggetti condivisi in fase di runtime.

vs.

-L searchdir
--library-path = searchdir
      Aggiunge il percorso searchdir all'elenco dei percorsi in cui ld cercherà le
      librerie di archivio e gli script di controllo ld.

Quindi, -Lindica lddove cercare le librerie a cui collegarsi durante il collegamento. Lo usi (ad esempio) quando stai compilando con le librerie nel tuo albero di compilazione, che verrà inserito nei normali percorsi delle librerie di sistema da make install. --rpath, d'altra parte, memorizza quel percorso all'interno dell'eseguibile, in modo che il linker dinamico di runtime possa trovare le librerie. Lo usi quando le tue librerie si trovano al di fuori del percorso di ricerca della libreria di sistema.


16
Note: 1. La maggior parte delle volte quando si ha bisogno -rpath=/some/weird/path, è necessario -L /some/weird/pathanche. 2. Con gccuna necessità di utilizzo -Wl,-rpath=dir.
n. 'pronomi' m.

4
Continuo a non capire perché sono necessari entrambi. Ho la stessa esperienza di nm sopra. Quali informazioni sono necessarie dalla libreria in fase di compilazione? A parte eventuali file h, di causa. Ma questa è un'altra cosa immagino ...
Fredrik Johansson

1
@FredrikJohansson Sarebbe un argomento ragionevole per una nuova domanda (presumendo che non sia già stata posta, ovviamente). I simboli disponibili sono necessari, almeno, ma probabilmente ci sono altre cose.
derobert

4
Domanda di follow-up aggiunta a: stackoverflow.com/questions/28096133/…
Fredrik Johansson
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.