web-dev-qa-db-ja.com

makefileでRPATHを指定する方法は?

バイナリでrpathを指定しようとしています。私のメイクファイルは次のようになります-

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

clean:
    rm -f main main.o 

しかし、コマンドreadelf -a ./main | grep rpathを使用してrpathを照会すると、rpathをLDFLAGS= "-rpath=../libs/"として指定しようとしても何も得られませんが、それでも機能しないようです。

誰かがメイクファイルでrpathを指定する方法の例を投稿できますか?

GCCとldのバージョンは-

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

変数を設定する場合は、おそらくそれらを使用する必要があります。特にmakeがこれらの変数を魔法のように設定しない場合は、そうしないのはばかげています! :)

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

もう1つの問題はLDFLAGSです。

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

オプションをリンカに渡すための通常のgccスイッチは-Wl,であり、gcc自体が裸の-rpathリンカオプションを理解できない可能性があるために必要です。 gccのさまざまなバージョンのビルドの中には-rpathを受け入れるものもありますが、gccのマニュアルページや情報ページに記載されているのを見たことがありません。移植性を高めるには、-Wl,-rpathを優先する必要があります。

40
user539810