開発バージョンがシステムパッケージと競合するのを防ぎます。

開発バージョンがシステムパッケージと競合するのを防ぎます。

私は、私のシステムパッケージを介してインストールされたオープンソースプロジェクトに対していくつかの作業を行う予定です。システムにインストールされているパッケージを維持しながら、開発中のバージョンをコンパイルして実行したいという状況を管理するために提案されたワークフローがあるかどうか疑問に思います。

私の質問は、以前は他のプロジェクトでこれについて考えたことがあるので、非常に一般的な質問ですが、この特別な例を通して質問をしました。

私が言及したプロジェクトは。もちろん、プロジェクトには異なる依存関係がありますが、特に同じ著者の依存関係があります。libtorrent。要点は、これらの両方が私のシステムパッケージよりも最新であるため、両方をインポートし、そのlibtorrentバージョンに対してrtorrentをビルドする必要があることです。

今まで私はlibtorrentをコンパイルしましたが、make install私のシステムパッケージと競合すると思うので、まだ実際に実行していません。結局、ライブラリファイルをにダンプしますsrc/.libsが、ヘッダファイルにもアクセスする必要があると思います。そうですか?

このgit cloned rtorrentの構築をどのように進めるべきですか?以前にこのようなことをしたことがないので、無知を許してください。しかし、すべてが台本を中心に行われますか ./configure?単にuseを使用してLDFLAGSライブラリパスを追加し-LCPPFLAGSインクルードパス(ヘッダー用)を追加する必要がありますか-I?それとも、libtorrentとrtorrentの共通分母を使用してre- ./configurelibtorrentを使用して--prefixからmake installlibtorrentを使用する必要がありますか?

ありがとうございます!

編集する./configure --helpこれらの「影響力のある環境変数」を表示します。

libtorrent_CFLAGS
          C compiler flags for libtorrent, overriding pkg-config
libtorrent_LIBS
          linker flags for libtorrent, overriding pkg-config

私が気になるのは、LDFLAGSandを設定しても、CPPFLAGS最終的にはlibtorrentが使用する情報を取得し続けるので、pkg-configそれを使用しなければならないという印象を与えるということです。これにより、成功した./configure実行が可能になり、引き続き--prefix使用できると考えられるパラメータが得られました。

ベストアンサー1

この問題を処理する2つの主な方法があります。ランタイム時、rpathを使用して接続するか、LD_LIBRARY_PATHまたはLD_PRELOADを介して開発共有オブジェクトをロードします。

コンパイル時に必要な-I / -Lコマンドラインオプションを挿入する必要があります(すでに方法が見つかりました)。

まあ、私にとってうまくいったのは、rpath-linkingを使ってpkgconfigに固執して生成された設定ファイルをパッチして正しいパスをエクスポートすることでした。バラよりこのスクリプトもっと学ぶ。

おすすめ記事