リンカーオプションについて知っています:-Wl,-rpath,'\$\$ORIGIN'
あなたは間違っていることを知っています:上記のオプションはあなたが望むことをしません。欲しいオプションは-Wl,-rpath='$ORIGIN'
. 違い:
echo "int main() { }" | gcc -xc - -Wl,-rpath,'\$\$ORIGIN' &&
readelf -d a.out | grep ORIGIN
0x000000000000000f (RPATH) Library rpath: [\$\$ORIGIN]
echo "int main() { }" | gcc -xc - -Wl,-rpath='$ORIGIN' &&
readelf -d a.out | grep ORIGIN
0x000000000000000f (RPATH) Library rpath: [$ORIGIN]
常に含める必要がありますか-Wl,-z,origin
動的エントリの-Wl,-z,origin
セットDF_ORIGIN
。FLAGS_1
現在の GLIBC トランクの時点では、そのフラグの値を確認するものは何もないため、ターゲットにする場合(GLIBC
ほとんどの Linux プログラムはそうします)、答えは次のとおりです。使用するかどうかはまったく問題ではありませ-z origin
ん。
答えは、他の libc 実装では異なる場合があります。ただし、Solaris libc (全体のソース$ORIGIN
) も を設定する必要がないようにDF_ORIGIN
思われるため、おそらくこれを完全に無視するのが安全な方法です。