私は、おそらく非標準的な方法で、libtoolベースのパッケージを自分のプロジェクトに組み込んでみようとしています。これが私の目標です:
外部プロジェクトを構築する:
./configure --prefix=$HOME/blah --etcetera && make && make install
実行時に外部プロジェクトの共有ライブラリと実行可能ファイルに依存する独自のプロジェクトをビルドします。
gcc -I$HOME/blah/include -L$HOME/blah/lib -o $HOME/blah/bin/program
すべてを単一の「ローカライズされた」tarballにパッケージ化します...つまり
$HOME/blah
、ビルドホストにすべてを入れている間に、環境に煩わされることなく、tarballを任意のディレクトリ(他のホスト)に抽出できるようにします。その目的は、私のプロジェクトの複数のバージョンを、厄介な「他家受粉」なしに並べて共存できるようにすることです。
プロジェクトに使用-rpath '$ORIGIN/../lib'
して、実行時に適切な共有ライブラリが常に読み込まれるようにすることができます。-rpath
ただし、libtoolは、の正確なパスに基づいて独自の設定を割り当てることを主張しているようです$HOME/blah/lib
。これは、すべてを別のディレクトリ(たとえば$HOME/blah.2011-06-02
)に解凍すると壊れます。
この制限を回避する方法はありますか?このトピックについて、debianとlibtoolの人々の間でかなり長いrpathの議論が見られますが、それはやや古く、「私たちは同意しません」を超えて決定的ではありません。