2011-07-10 3 views
9

バイナリにrpathを指定しようとしています。 私のメイクはthis-メークファイルに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を照会するとき、私は私がLDFLAGS= "-rpath=../libs/"としてRPATHを指定しようとしましたが、でもそれが動作するようには思えない 何も得ます。

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

GCCとLDバージョンでは、変数を設定した場合、あなたはおそらくそれらを使用する必要があります

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

答えて

33

をare-。特にmakeがそれらの変数をあなたのために魔法のように設定しないときは愚かです。 :)もう一つの問題は、LDFLAGSある

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

、それは

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

である必要があり、リンカにオプションを渡すための通常のGCCスイッチが-Wl,あり、そしてそれはGCC自体ために必要とされます裸の-rpathリンカオプションを理解できない場合があります。 gccのさまざまなバージョンのいくつかのビルドは-rpathを受け入れていますが、gccのマニュアルページまたはinfoページには記載されていません。より良い移植性のためには、-Wl,-rpathが好ましいはずです。

+0

メイクファイルを更新した後、私は以下のエラーが表示されます:認識できないオプション '-rpath = ../libs /' – user837208

+0

チャームのように働きました!本当にありがとう。 – user837208

+3

これはちょっとしたことだと思いますが、誰かが不思議に思っていたとしても、完全なパスは 'LDFLAGS =" - Wl、-rpath、/ mnt/us/extensions/thing/usr/lib/"' – twobob

関連する問題