ソースからtmuxをビルドするときにgccがlibeventを見つけられないのはなぜですか?


68

ルートアクセス権がないマシンにtmuxをインストールしたい。私はすでにlibeventをコンパイルし、それをインストール$HOME/.bin-libeventし、今私はtmuxのをコンパイルしたいのですが、いつもで終わる構成するconfigure: error: "libevent not found"私はlibeventディレクトリを指すようにしようとしたにも関わらず、Makefile.am修正することにより、LDFLAGSおよびCPPFLAGS、しかし何も動いていないようにみえ。

libeventのホームディレクトリを検索するようにシステムに指示するにはどうすればよいですか?


別の方法は、dtachを調査することです。分離可能なセッションが必要な場合に便利ですが、ルートがなく、tmuxを静的にコンパイルする時間がありません。
ソニアハミルトン

RHEL 6.xを使用している場合は、リポジトリにプリコンパイル済みのtmuxがあります。
チリ

回答:


63

試してください:

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

(autoconfでライブラリパスを設定するより良い方法があるはずです。通常は--with-libevent=dirオプションがあります。しかし、ここでは、そのようなオプションはないようです。)


4
これがmake最終的に機能するようにしたアプローチです。他の環境変数を設定してprefixand を設定してみましたがexec-prefix、これらのフラグを含めると、実際にビルドされました。
wizonesolutions

フラグに複数のディレクトリを指定するにはどうすればよいですか?試しました./configure CFLAGS="-I$DIR/include:/usr/otherdir" LDFLAGS="-L$DIR/lib:/usr/otherdir"が成功しませんでした
lucaswxp

1
@lucaswxpCFLAGS="-Idir1 -Idir2 -Idir3" LDFLAGS="-Ldira -Ldirb -Ldirb"
Kusalananda

私はこの答えを使用し、libevent not foundエラーはなくなりましたが、今は同じようになりncursesます:curses not found。私libeventncursesインスタレーションは両方とも$HOME/.local/
Aalok

以下のためにlibevent使用し、LIBEVENT_CFLAGSそしてLIBEVENT_LIBS代わりのCFLASGLDFLAGS。以下のためにncurse、使用LIBTINFO_CFLAGSしてLIBTINFO_LIBS@Aalok
Jongsuリアム・キム

9

私は同様の問題を抱えていて、実行後にsudo yum install libevent-develtmuxを正常に作成およびインストールできることを発見しました。

編集:これをRed Hatマシンにインストールする場合は、Red Hat Network上のサーバーのチャネル選択にアクセスし、RHEL Serverオプションチャネルを追加する必要もあります。これにより、libeventの-develパッケージにアクセスできるようになります(ベースおよび補助チャネルでは提供されません)。


3
これは通常の修正方法ですが、この場合は「ルートアクセス権のないマシン」でした
Michael Mrozek

これは私を助けました。私はrootではなく、devel libをインストールしていませんでした。
polym 14

devel libをtarファイルとしてどこで入手しますか?
arrowill14年

1
私のfedoraマシンでは、sudo yum install libevent-devel以外にsudo yum install ncurses-develが必要です
Mustakimur Ra​​hman

6

RHEL 5.4でも同じ問題が発生し、実際にはlibeventがインストールされていますが、libevent.soシンボリックリンクはなく、ライブラリの実際のバージョンのみが見つかりました。

/usr/lib64/libevent-1.1a.so.1
/usr/lib64/libevent-1.1a.so.1.0.2

そのため、ln -s /usr/lib64/libevent-1.1a.so.1 /usr/lib64/libevent.soインストールや変更を行う必要なく、私にとっては非常にうまく機能します。RedHatのlibevent rpmがシンボリックリンクを作成しなかった理由はわかりません。報告すべきバグでしょうか?

しかし、今、これについて不平を言っていますerror: event.h: No such file or directory


まったく同じエラーが発生しました:error: event.h: No such file or directory
gkb0986

RHEL 6を使用しています。libeventをダウンロードしてコンパイルし、ユーザーフォルダーにインストールしました。次に、上記の@StéphaneGimenezのトリックを使用してコンパイルしました。実行するには、@ rozcietrzewiacz:で指定されたLD_PRELOADトリックでエイリアスを作成しますtmux='LD_PRELOAD=/opt-local/lib/libevent-2.0.so.5 /opt-local/bin/tmux'。チャームのように機能します!
CSL

1
シンボリックリンクをいじったり、システムディレクトリ内で手動でコピーしたりすることに気付いた場合は、より良い方法があります。
クサラナンダ

3

tmux(または任意のプログラム)の構成とコンパイルの前に、必要なライブラリを見つけることができる場所を指定する必要があります。非標準の場所にライブラリをインストールした場合は、環境変数LD_LIBRARY_PRELOADを使用して、ライブラリの場所を確認できます。

あなたの場合:

$ export LD_LIBRARY_PRELOAD=$HOME/.bin-libevent/lib

そして、構成/コンパイルを続けます。

後で、バイナリは追加のライブラリがどこにあるかを知る必要があるため、exportステートメントを.bashrc(bashがログインシェルである場合)に配置する必要があります。


感謝しますが、悲しいことにこれは機能しません、同じエラーメッセージ。バージョン番号はlibevent-2.0.12動作するはずです
フォルカー

次に、libeventのコンパイルに問題があるようです。何がfind .bin-libevent -name 'libevent.so*'表示されますか?
rozcietrzewiacz

$ find .bin-libevent -name 'libevent.so*'発見.bin-libevent/lib/libevent.so
フォルカー・

:)その後、ディレクトリを指す必要があります$HOME/.bin-libevent/lib(答えを更新)
rozcietrzewiacz

はい、私はすでにそれを試してみましたが、まだ変更はありません。私は非常に困惑し、イライラしています。
フォルカー

1

https://gist.github.com/ryin/3106801に要点があります

#!/bin/bash

# Script for installing tmux on systems where you don't have root access.
# tmux will be installed in $HOME/local/bin.
# It's assumed that wget and a C/C++ compiler are installed.

# exit on error
set -e

TMUX_VERSION=1.8

# create our directories
mkdir -p $HOME/local $HOME/tmux_tmp
cd $HOME/tmux_tmp

# download source files for tmux, libevent, and ncurses
wget -O tmux-${TMUX_VERSION}.tar.gz http://sourceforge.net/projects/tmux/files/tmux/tmux-${TMUX_VERSION}/tmux-${TMUX_VERSION}.tar.gz/download
wget https://github.com/downloads/libevent/libevent/libevent-2.0.19-stable.tar.gz
wget ftp://ftp.gnu.org/gnu/ncurses/ncurses-5.9.tar.gz

# extract files, configure, and compile

############
# libevent #
############
tar xvzf libevent-2.0.19-stable.tar.gz
cd libevent-2.0.19-stable
./configure --prefix=$HOME/local --disable-shared
make
make install
cd ..

############
# ncurses  #
############
tar xvzf ncurses-5.9.tar.gz
cd ncurses-5.9
./configure --prefix=$HOME/local
make
make install
cd ..

############
# tmux     #
############
tar xvzf tmux-${TMUX_VERSION}.tar.gz
cd tmux-${TMUX_VERSION}
./configure CFLAGS="-I$HOME/local/include -I$HOME/local/include/ncurses" LDFLAGS="-L$HOME/local/lib -L$HOME/local/include/ncurses -L$HOME/local/include"
CPPFLAGS="-I$HOME/local/include -I$HOME/local/include/ncurses" LDFLAGS="-static -L$HOME/local/include -L$HOME/local/include/ncurses -L$HOME/local/lib" make
cp tmux $HOME/local/bin
cd ..

# cleanup
rm -rf $HOME/tmux_tmp

echo "$HOME/local/bin/tmux is now available. You can optionally add $HOME/local/bin to your PATH."

1
また、カスタムの場所(私はターゲットシステムの管理者ではない)にcursesをインストールしましたが、ncurses指定したinclude / libraryパスのサブディレクトリに自分自身をインストールすることに気付きませんでした。奇数デザインの選択。これは私のためにそれを修正しました。
18:59のwbadart

0

私は同じ問題を抱えており、最も支持された答えは私にとってうまくいかなかったようです。Fedora 22 Workstationを使用しています。これを修正するために私がしたことは次のとおりです。1. libevent-develパッケージをインストールします。2. ncurses-develパッケージをインストールする

$ dnf install libevent-devel`
$ dnf install ncurses-devel

1つevent.h目は問題を解決せず、2つ目は呪いの問題が見つからないことを解決します。ところで、上記のソフトリンク方法は、の間にも機能します./configure


なぜ投票されたのかはわかりません。CentOSシステムでの問題を修正しました。
-Dharmit

0

受け入れられた答えは良いですが、少なくともtmux 2.8では、環境変数を使用してlibeventの場所を指定するサポートがあります。

まず、目的の場所にlibeventをインストールします。autoconfに問題があるため、私はcmakeを使用しました

cmake -DCMAKE_INSTALL_PREFIX=$HOME/usr ..
make install

次に、tmuxをビルドしてインストールします。

export LIBEVENT_CFLAGS=-I${HOME}/usr/include 
export LIBEVENT_LIBS="-L${HOME}/usr/lib -levent" 
./configure --prefix=$HOME/usr
make install

環境変数のLIBEVENT_CFLAGSオーバーライドにpkg-configは、libeventの設定が含まれLIBEVENT_LIBS、リンカーフラグの設定がオーバーライドされます。


-3

CentOS 6では/opt/libevent、次のコマンドを使用して、ディレクトリにlibeventをコンパイルしてインストールします。

# ./configure --prefix=/opt/libevent
# make
# make install

次に、アプリケーションをインストールします(この場合はPgBouncerでした)

# ./configure --prefix=/opt/ *--with-libevent=/opt/libevent/*

任意の場所でディレクトリを変更できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.