0

これは一般的に、make での実行時リンクに関する質問です。

Linux システムにソースから tmux をインストールしようとしています。ホームディレクトリにインストールした「libevent」に依存しています。私はこのシステムのルートではないので、システム全体にインストールすることはできません。

DIR=$HOME/libevent ./configure --prefix=$HOME/site/tmux/ CFLAGS="-I$DIR/include" LDFLAGS="-L$DIR/lib/"

上記のコマンドは機能しますが、tmux を機能させるには、常に LD_LIBRARY_PATH に $HOME/libevent を含める必要があります。もっと良い方法があるべきだと思います。

LD_LIBRARY_PATH をいじる必要がないように、ランタイム リンクが必要です。ここでhttp://www.ilkda.com/compile/Environment_Variables.htmを読みました。これは「-R」オプションを使用して実現できます。

./configure --prefix=$HOME/site/tmux/ CFLAGS="-I$DIR/include" LDFLAGS="-L$DIR/lib/" LDFLAGS="-R$DIR/lib/"

しかし、これは機能せず、次のエラーが生成されます: configure: error: "libevent not found"

configureスクリプトの実行中にmakeでランタイムリンクを行う方法を教えてください。

4

1 に答える 1

1

LDFLAGS="-L$DIR/lib/" LDFLAGS="-R$DIR/lib/"

は に設定LDFLAGSされ-L$DIR/lib/すぐにで上書きされますが、結果-R$DIR/lib/は と同じです。x = 1; x = 2;x == 2

あなたが望むものは:LDFLAGS="-L$DIR/lib/ -R$DIR/lib/"

「libevent が見つかりません」

私はあなたがマニュアルページを読んでくれると信じていましたが、あなたはそうではありませんでした。この-RフラグはRUNPATH、Solaris ではリンカを意味しますが Linux リンカでは別の意味を持ちます。

あなたが望むのは次のとおりです。

LDFLAGS="-L$DIR/lib/ -Wl,--rpath=$DIR/lib/"
于 2013-06-22T20:33:38.203 に答える