[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 (佐野 武俊)