[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-devel:11062] Re: Intent to package: xgraph
佐野@浜松です。
In article <19991125210448.A3184@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
kiwamu <kiwamu@debian.or.jp> さん writes:
> すいません。
> 書き忘れてしまったのですが、
>
> W: xgraph: binary-or-shlib-defines-rpath ./usr/bin/xgraph /usr/X11R6/lib/
> N:
> N: The binary or shared library defines the RPATH'. Usually this is a
> N: bad thing. If this is a lib built using libtool, have a look at the
> N: file /usr/share/doc/lintian/libtool-workarounds.txt that comes with
> N: the Lintian package for a workaround. Please contact
> N: debian-devel@lists.debian.org if you have questions about this.
> N:
>
> のようなlintianエラーが出てしまうのですが、
> このRPATHと言うのはどういうことなのでしょうか?
man ld
/rpath
-rpath directory
ディ レ ク トリを実行時ライブラリの検索パスに追加す
る。これは ELF の実行ファイルを共有オブジェクトとリ
ン クするときに用いられる。 -rpath の引き数は全て結
合され、ダイナミックリンカに渡される。ダイナミッ ク
リ ンカは、これを用いてロードする共有オブジェクトを
実行時に決定する。 -rpath オプションはリンクに明 示
的 に含まれている共有オブジェクトによって必要とされ
る別の共有オブジェクトを指定するのに用いることも で
き る。 -rpath-link オプションの説明を見よ。 ELF 実
行ファイルの -rpath が指定されない場合には、 (指 定
さ れ ていれば) 環境変数 LD_RUN_PATH の値が用いられ
る。
-rpath オプションは SunOS で用いることも で き る。
SunOS のデフォルトでは、リンカは実行時の検索パスを
-L オプションで与えられたパスから生成する。 -rpath
が 用いられると、実行時の検索パスは -rpath オプショ
ンで与えられたパスのみから生成され、 -L オプショ ン
は無視される。これは gcc を使っていて、 -L がたくさ
ん指定されてしまう (これらは NFS マウントされたファ
イルシステムかもしれない) 場合などに便利である。
***
Makefile のどこかで LD の Option に -rpath を指定している場所が
ありませんか ?
リンク時に -rpath を指定されていると、そのライブラリが絶対パスで
実行バイナリの中に記録されます。(strings 実行バイナリで確認できる)
これは Sun OS などでは便利な機能だったらしいですが、Linux の ldso
(実行時ダイナミックリンカ) は賢いので -rpath は不要であるばかりか、
bo から hamm に移行する際、libc5 なライブラリを必要とするバイナリが
-rpath のせいで ldso が指定する libc5 なライブラリを無視して
libc6 なライブラリをロードしてしまって core dump するなど、問題を
引き起こす原因にもなりました。
このため、現在では ld オプションの -rpath は Linux 上では使わない
ほうが良いとされています。特に Debian ではポリシーで禁止されており、
lintian では上記の警告が出されます。
--
# (わたしのおうちは浜松市、「夜のお菓子」で有名さ。)
<xlj06203@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)