소스에서 tmux를 빌드할 때 gcc가 libevent를 찾을 수 없는 이유는 무엇입니까?

소스에서 tmux를 빌드할 때 gcc가 libevent를 찾을 수 없는 이유는 무엇입니까?

루트 액세스 권한이 없는 컴퓨터에 tmux를 설치하고 싶습니다. libevent를 컴파일하고 설치했습니다 $HOME/.bin-libevent. 이제 tmux를 컴파일하고 싶지만 구성이 항상 libevent로 끝나는데 , libevent 디렉토리를 수정 하고 가리키 configure: error: "libevent not found"려고 해도 아무것도 작동하지 않는 것 같습니다.Makefile.amLDFLAGSCPPFLAGS

내 홈 디렉토리에서 libevent를 찾도록 시스템에 어떻게 지시합니까?

답변1

노력하다:

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

(autoconf를 사용하여 라이브러리 경로를 구성하는 더 좋은 방법이 있을 것이라고 확신합니다. 일반적으로 옵션이 있지만 --with-libevent=dir여기서는 그런 옵션이 없는 것 같습니다.)

답변2

비슷한 문제가 있었는데 이것을 실행한 후 sudo yum install libevent-develtmux를 성공적으로 만들고 설치할 수 있다는 것을 알았습니다.

편집: Red Hat 시스템에 이 프로그램을 설치하는 경우 Red Hat 네트워크에서 서버의 채널 선택에 액세스하고 RHEL 서버 선택적 채널을 추가해야 합니다. 이렇게 하면 libevent의 -devel 패키지에 액세스할 수 있습니다(기본 및 추가 채널에서는 사용할 수 없음).

답변3

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.

답변4

중요한 점이 있어요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."

관련 정보