gcc
e ld
fornecem muitas maneiras de especificar um caminho de pesquisa para bibliotecas - entre elas os sinalizadores -rpath
e -L
. As páginas de manual não revelam diferenças entre esses dois sinalizadores, efetivamente dizendo que cada sinalizador adiciona uma biblioteca ao caminho de pesquisa da biblioteca. No entanto, parece estranho que ambas as bandeiras façam exatamente a mesma coisa. Quais são as diferenças, se houver, entre essas duas opções?
gcc
linker
shared-libraries
ld
Craig M. Brandenburg
fonte
fonte
-rpath-link
?Respostas:
Você deve estar lendo algumas cópias desatualizadas das páginas de manual (ênfase adicionada):
vs.
Portanto,
-L
informald
onde procurar bibliotecas para vincular ao vincular. Você usa isso (por exemplo) quando está construindo com base em bibliotecas em sua árvore de construção, que serão colocadas nos caminhos de biblioteca normais do sistema pormake install
.--rpath
, por outro lado, armazena esse caminho dentro do executável, para que o vinculador dinâmico de tempo de execução possa localizar as bibliotecas. Você usa isso quando suas bibliotecas estão fora do caminho de pesquisa da biblioteca do sistema.fonte
-rpath=/some/weird/path
,-L /some/weird/path
também se precisa . 2. Comgcc
um precisa de uso-Wl,-rpath=dir
.