2013-06-21 5 views
6

Ich habe Probleme, mein Verständnis davon zu bestätigen, wie rpath-link funktioniert, wenn ich mit der spezifischen Tool-Kette kompiliere, die ich verwende (obwohl ich denke, dass dies eine generelle Frage ist).Wie wird rpath-link in der Kreuzkompilierung verwendet?

Wenn ich einen Blick darauf werfen, was Fahnen an den Compiler und Linker übergeben werden, wenn Bibliotheken und Anwendungen bauen, ich sehe die an den Linker übergeben folgende:

-Wl,-rpath-link,/home/Dev/env/sys/crosscompiletoolchain/armle-v7/lib/ 

Das ist also ein Weg in den gemeinsamen eingebettet Bibliotheken werden für das Zielgerät auf meinem Entwicklungscomputer erstellt. Dies ist sinnvoll, da ich die gesamte letzte Verknüpfung auf dem Entwicklungscomputer vor der Bereitstellung auf dem Gerät durchführen würde. Wenn ich jedoch schließlich auf dem Gerät bereitstellen werde (dh shared libs + application), haben diese gemeinsam genutzten Bibliotheken keine nutzbare rpath-Verbindung?

Die gebauten Bibliotheken und Anwendungen scheinen auf dem Ziel unabhängig zu funktionieren, und wenn ich raten müsste, würde ich es sagen, weil die Anwendung eine Umgebung hat, die vom Gerät-Betriebssystem mit/lib/als einer von seine Standardbibliothekssuchpfade (rpath-link gibt nur den ersten zu durchsuchenden Verzeichnissatz an). Ist das richtig?

Antwort

12

Check "LD verwenden, die GNU-Linker - Optionen - GNU-Projekt Archives" (ftp.gnu.org/pub/old-gnu/Manuals/ld-2.9.1/html_node/ld_3.html):

Der Unterschied zwischen -rpath und -rpath-Link ist, dass durch -rpath Optionen angegebenen Verzeichnisse sind enthalten in Die ausführbare Datei wird zur Laufzeit verwendet, während die Option -rpath-link nur zur Verbindungszeit wirksam ist.