20

バイナリで 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
4

1 に答える 1

48

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

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

別の問題はLDFLAGS、そうあるべきです

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

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

于 2011-07-10T01:10:45.427 に答える