Jak określić RPATH w pliku makefile?
Próbuję określić rpath w moim pliku binarnym. Mój makefile wygląda tak -
CC=gcc
CFLAGS=-Wall
LDFLAGS= -rpath='../libs/'
main: main.c
gcc -o main main.c
clean:
rm -f main main.o
Ale kiedy odpytywam rpath używając komendy readelf -a ./main | grep rpath
nie dostaję nic
Próbowałem określić rpath jako LDFLAGS= "-rpath=../libs/"
, ale nawet to nie działa.
Czy ktoś może zamieścić przykład jak należy określić rpath w pliku makefile?
Wersje GCC i ld to -
gcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2
GNU ld (GNU Binutils for Ubuntu) 2.21.0.20110327
1 answers
Jeśli ustawisz zmienne, prawdopodobnie powinieneś ich użyć. To głupie, aby nie, zwłaszcza gdy make nie magicznie ustawić te zmienne dla Ciebie! :)
main: main.c
$(CC) $(CFLAGS) $(LDFLAGS) -o main main.c
Kolejnym problemem jest LDFLAGS
, powinno być
LDFLAGS="-Wl,-rpath,../libs/"
Zwykły GCC przełącznik do przekazywania opcji do linkera to -Wl,
, i jest potrzebny, ponieważ gcc sam może nie zrozumieć nagiej opcji linkera -rpath
. Podczas gdy niektóre buildy różnych wersji gcc akceptują -rpath
, nigdy go nie widziałem udokumentowane w GCC stron podręcznika lub stron informacyjnych. Dla lepszej przenośności, -Wl,-rpath
powinny być preferowane.