Por que o gcc não consegue encontrar o libevent ao construir o tmux a partir do código-fonte?

63

Eu quero instalar o tmux em uma máquina onde não tenho acesso root. Eu já compilei o libevent e o instalei em $HOME/.bin-libevent e agora quero compilar o tmux, mas o configure sempre termina com configure: error: "libevent not found" , mesmo que eu tentei apontar para o diretório libevent no Makefile.am modificando LDFLAGS e CPPFLAGS , mas nada parece funcionar.

Como posso dizer ao sistema para procurar no meu diretório home pelo libevent?

    
por volker 02.08.2011 / 18:04

8 respostas

58

Tente:

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

(Tenho certeza que deve haver uma maneira melhor de configurar caminhos de bibliotecas com o autoconf. Geralmente há uma opção --with-libevent=dir . Mas aqui, parece que não existe essa opção.)

    
por 02.08.2011 / 20:09
9

Eu estava tendo um problema semelhante e descobri que, depois de executar sudo yum install libevent-devel , consegui fazer e instalar o tmux com êxito.

EDIT: Se você estiver instalando isso em uma máquina Red Hat, você também precisará visitar a seleção de canais para o seu servidor na Red Hat Network e adicionar o canal Opcional do RHEL Server. Isto lhe dará acesso aos pacotes -devel para o libevent (os canais base e suplementares não o fornecem).

    
por 07.05.2012 / 16:06
6

Eu tive o mesmo problema no RHEL 5.4 e realmente encontrei o libevent instalado, mas não há um link simbólico libevent.so, apenas a versão real da biblioteca:

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

Então, ln -s /usr/lib64/libevent-1.1a.so.1 /usr/lib64/libevent.so funciona muito bem para mim sem a necessidade de instalar ou alterar nada. Não sei por que o libevent rpm do RedHat não criou o symlink. Talvez um bug para relatar?

Mas agora, está reclamando por isso: error: event.h: No such file or directory .

    
por 23.01.2012 / 16:53
3

Antes da configuração e compilação do tmux (ou de qualquer outro programa) você precisa dizer onde ele pode encontrar as bibliotecas necessárias. Se você instalou alguma biblioteca em um local não padrão, poderá usar a variável de ambiente LD_LIBRARY_PRELOAD para informar onde algumas bibliotecas estão localizadas.

Eu sou seu caso:

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

Depois, prossiga com a configuração / compilação.

Mais tarde, o binário também precisará saber onde suas bibliotecas adicionais podem ser encontradas, então você precisará colocar a declaração export em seu .bashrc (se bash for seu shell de login).

    
por 02.08.2011 / 18:56
0

Eu tenho o mesmo problema e parece que a resposta mais votada não funcionou para mim. Eu estou usando o Fedora 22 Workstation. Aqui está o que eu fiz para consertar isso: 1. Instale o pacote libevent-devel . 2. Instale o ncurses-devel package

$ dnf install libevent-devel'
$ dnf install ncurses-devel

O primeiro não resolve nenhum problema de event.h e o segundo resolverá não pode encontrar problema de maldição. BTW, o método softlink acima também funciona para mim durante ./configure .

    
por 23.07.2015 / 07:19
0

Existe uma essência no link :

#!/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."
    
por 25.05.2018 / 21:20
0

A resposta aceita é boa, mas a partir de pelo menos o tmux 2.8 existe suporte para especificar a localização da biblioteca utilizando variáveis de ambiente.

Primeiro instale o libevent no local desejado. Eu usei cmake porque eu tive um problema com o autoconf

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

Em seguida, crie e instale o tmux:

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

A variável de ambiente LIBEVENT_CFLAGS substitui pkg-config inclui configurações para libevent e LIBEVENT_LIBS substitui as configurações de sinalizador de vinculador.

    
por 29.09.2018 / 07:42
-3

No CentOS 6, compile e instale o libevent no diretório /opt/libevent com o comando:

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

Em seguida, instale minha aplicação (neste caso foi PgBouncer)

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

Você pode alterar os diretórios onde quiser.

    
por 24.06.2015 / 18:30