Как указать RPATH в make-файле? - PullRequest
14 голосов
/ 10 июля 2011

Я пытаюсь указать rpath в моем двоичном файле. Мой make-файл выглядит так -

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

clean:
    rm -f main main.o 

Но когда я запрашиваю rpath с помощью команды readelf -a ./main | grep rpath, я ничего не получаю Я попытался указать rpath как LDFLAGS= "-rpath=../libs/", но даже это, похоже, не работает.

Может кто-нибудь опубликовать пример того, как мне указать rpath в make-файле?

GCC и ld версии-

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

1 Ответ

39 голосов
/ 10 июля 2011

Если вы установите переменные, вы, вероятно, должны их использовать. Глупо не делать этого, особенно если make не будет магически устанавливать эти переменные для вас! :)

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

Другая проблема - LDFLAGS, она должна быть

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

Обычный gcc переключатель для передачи параметров компоновщику - -Wl,, и он необходим, потому что gcc сам по себе может не понимать опцию линкера -rpath. В то время как некоторые сборки различных версий gcc принимают -rpath, я никогда не видел, чтобы это было документировано на gcc страницах руководства или информационных страницах. Для лучшей мобильности предпочтительным является -Wl,-rpath.

...