バイナリで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
変数を設定する場合は、おそらくそれらを使用する必要があります。特に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
を優先する必要があります。