Eu tive o mesmo problema e estava prestes a desistir do libmemcached quando percebi que o sinalizador de configuração deveria ser
CPPFLAGS="-I/usr/local/_custom/app/libevent/include"
em vez de
CFLAGS="-I/usr/local/_custom/app/libevent/include"
Estou tentando compilar o libmemcached (1.0.7) no CentOS6 e continuo recebendo o seguinte aviso:
...
checking for event.h... no
configure: WARNING: Unable to find libevent
...
Eu manualmente compilei o libevent (2.0.19) e o construí usando a seguinte linha de configuração:
OPTIONS="--prefix=/usr/local/_custom/app/libevent"
Tudo compilado e instalado corretamente, mas não consegui descobrir como tornar o sistema ciente de que os arquivos lib estão no /usr/local/_custom/app/libevent/lib dir. Eu me deparei com um artigo e li que eu posso tornar o sistema ciente do que é costume caminhos, adicionando um arquivo personalizado ao diretório /etc/ld.so.conf.d/ :
# /etc/ld.so.conf.d/customApp.conf
/usr/local/_custom/app/libevent/lib
Em seguida, emiti o comando ldconfig e consegui confirmar que libevent foi incluído ao emitir este comando:
ldconfig -p | ack -i libevent
Vendo que o libevent agora estava incluído na saída do ldconfig, imaginei que seria capaz de compilar o libmemcached e satisfazer o aviso acima mencionado. Infelizmente isso não aconteceu. Então, dei outra olhada na saída ldconfig e notei isso:
libevent_pthreads-2.0.so.5 (libc6,x86-64) => /usr/local/_custom/app/libevent/lib/libevent_pthreads-2.0.so.5
libevent_openssl-2.0.so.5 (libc6,x86-64) => /usr/local/_custom/app/libevent/lib/libevent_openssl-2.0.so.5
libevent_extra-2.0.so.5 (libc6,x86-64) => /usr/local/_custom/app/libevent/lib/libevent_extra-2.0.so.5
libevent_core-2.0.so.5 (libc6,x86-64) => /usr/local/_custom/app/libevent/lib/libevent_core-2.0.so.5
libevent-2.0.so.5 (libc6,x86-64) => /usr/local/_custom/app/libevent/lib/libevent-2.0.so.5
Não há referências aos links de base, por exemplo, esperaria ver links para esses ( ls -la /usr/local/_custom/app/libevent/lib ):
libevent.so -> libevent-2.0.so.5.1.7
libevent_openssl.so -> libevent_openssl-2.0.so.5.1.7
libevent_core.so -> libevent_core-2.0.so.5.1.7
Ou estou fazendo algo errado ou o sistema ainda não sabe onde procurar para encontrar libevent.so .
- Atualização 1 -
Eu não consegui obter o libmemcached para compilar sem o aviso de aviso, mesmo depois de tentar compilar usando o seguinte comando configure:
./configure --prefix=/usr/local/_custom/app/libmemcached CFLAGS="-I/usr/local/_custom/app/libevent/include" LDFLAGS="-L/usr/local/_custom/app/libevent/lib"
Eu pensei com certeza que isso funcionaria porque estou passando diretamente os diretórios include e lib para o comando configure. Mas isso não aconteceu.
Eu tive o mesmo problema e estava prestes a desistir do libmemcached quando percebi que o sinalizador de configuração deveria ser
CPPFLAGS="-I/usr/local/_custom/app/libevent/include"
em vez de
CFLAGS="-I/usr/local/_custom/app/libevent/include"
Desculpe pelo meu primeiro inglês. meu os: CentOS 6.3 mini sem desktop x86_64, eu não tenho yum instalar libevent Eu encontrei o mesmo problema muitas vezes em diferentes ambientes Aqui está o meu processo de instalação do libevent:
tar zxvf libevent-2.0.20-stable.tar.gz
cd libevent-2.0.20-stable
./configure --prefix=/usr/local/libevent
make
make install
antes da minha instalação libmemcached-1.0.10 eu tentei
./configure --prefix=/usr/local/libmemcached --with-lib-prefix=/usr/local/libevent --with-memcached=/usr/local/bin/
e
LIBEVENT_CPPFLAGS=/usr/local/libevent/include
LIBEVENT_LDFLAGS=/usr/local/libevent/lib
o problema também aconteceu. então eu faço algum link como aqui:
ln -s /usr/local/libevent/include/* /usr/include/
ln -s /usr/local/libevent/lib/libevent* /usr/lib64/
está feito! Eu acho que libmemcached localizar libevent.so e event.h tem algum código rígido. desejo que minha solução possa ajudar você.
Eu sugeriria instalar o pacote libevent-devel no sistema. Isso fornecerá o arquivo de cabeçalho listado no erro que você postou, mas a versão pode ser mais antiga (1.4.13-1) do que a que você precisa para o seu libmemcached .
Analisando sua sequência, eu recomendaria remover o arquivo config.cache no diretório libmemcached source e, em seguida, executar novamente o ./configure para libmemcached . Isso deve permitir que o processo reconheça as alterações feitas nos caminhos de pesquisa da biblioteca.
Depois de falar com alguns caras experientes do Sysadmin do trabalho, optei por apenas fazer um yum install memcached . Como no CentOS, um dos trade-offs é trabalhar com versões mais antigas de apps / libs, mas os mantenedores do CentOS vão fazer backport de correções de segurança, então eu decidi usar a versão original e poupar um pouco de dor de cabeça.
Bem, eu não tenho uma resposta adequada, mas notei quando meu tmux recém-compilado no CentOS me disse
tmux: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
Eu tentei isso e funcionou:
LD_LIBRARY_PATH=/usr/local/lib tmux
Não tenho certeza de qual é a maneira canônica / padrão de configurar o LD_LIBRARY_PATH do sistema, mas ele não parece ser "horrível" se eu o coloquei no bashrc / zshrc.
Editar: Ah, aqui é uma resposta que elucida a maneira de informar ao seu sistema onde as bibliotecas moram.
Tags centos6