20 Stimmen

Wie kann man RPATH in einem Makefile angeben?

Ich versuche, rpath in meiner Binärdatei anzugeben. Mein Makefile sieht wie folgt aus-

CC=gcc 
CFLAGS=-Wall
LDFLAGS= -rpath='../libs/'
main: main.c  
    gcc -o main main.c

clean:
    rm -f main main.o 

Aber wenn ich rpath mit dem Befehl readelf -a ./main | grep rpath Ich erhalte nichts Ich habe versucht, rpath wie folgt zu spezifizieren LDFLAGS= "-rpath=../libs/" aber selbst das scheint nicht zu funktionieren.

Kann jemand bitte ein Beispiel posten, wie ich rpath in einem Makefile angeben sollte?

GCC und ld Versionen sind-

gcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2
GNU ld (GNU Binutils for Ubuntu) 2.21.0.20110327

49voto

Wenn Sie die Variablen setzen, sollten Sie sie auch verwenden. Es ist dumm, es nicht zu tun, vor allem, wenn make diese Variablen nicht auf magische Weise für Sie setzt! :)

main: main.c
    $(CC) $(CFLAGS) $(LDFLAGS) -o main main.c

Ein weiteres Problem ist LDFLAGS sollte es sein

LDFLAGS="-Wl,-rpath,../libs/"

Das Übliche gcc Schalter für die Übergabe von Optionen an den Linker ist -Wl, und sie ist notwendig, weil gcc selbst nicht verstehen, die bloße -rpath Linker-Option. Während einige Builds von verschiedenen Versionen von gcc akzeptieren -rpath Ich habe noch nie gesehen, dass dies in gcc man-Seiten oder Info-Seiten. Für bessere Portabilität, -Wl,-rpath sollte bevorzugt werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X