自分のプログラムを自分のコンピュータにインストールしています(libtiff.so -> libtiff.so.5
)。 そして、libtiff.so -> libtiff.so.4
という別のマシンでビルドをプッシュします。古いバージョンの共有ライブラリにリンクするにはどうすればいいですか
実行時に、私のプログラムが存在します:«共有ライブラリをロード中にエラー:libtiff.so.5
:共有オブジェクトファイルを開くことができません:そのようなファイルまたはディレクトリ»。
私は他のマシンをアップグレードできません。実行中のマシンと同じバージョンの仮想マシンでコンパイルしないようにしたいと思います。したがって、コンパイラにlibtiff.so.5
の代わりにlibtiff.so.4
を使用させたいと思います。
私はを(libtiff.so.5
と同様に)私のコンピュータにインストールしています。新しいバージョンではなく、どうすればこのバージョンと連携させることができますか?私はlibtiff.so -> libtiff.so.4
を動かすことを考えましたが、最新のバージョンが必要な場合は私のシステムを壊すのを恐れています(apt-get purge libtiff5
は他のパッケージが必要なのでエラーが出ます)。
古いバージョンのライブラリとリンクすることはできますか?はいの場合、どうですか? libtiff.so
のシンボリックリンクを古いバージョンに変更することは危険ですか?そうでない場合は、私の問題を解決するでしょうか?
[LD_PRELOAD](http://en.wikipedia.org/wiki/Dynamic_linker)を使用してください。 – jml
リンクするときに通常の '-ltiff'の代わりに.so.4への絶対パスを使うのはどうですか? (libtiff4互換のヘッダをコンパイルする必要があります)。 –
コンパイラは共有ライブラリの場所を見つけることができません。私はPATHも渡す必要があると思います。 –