Por que não consigo encontrar a biblioteca termcap quando crio o gdb?


10

make e falhou com:

configure: error: nenhuma biblioteca do termcap foi encontrada , mas essa lib do termcap está lá, por que não é possível encontrá-la?

checking for library containing zlibVersion... -lz
checking zlib.h usability... yes
checking zlib.h presence... yes
checking for zlib.h... yes
checking for library containing dlgetmodinfo... no
checking for iconv... yes
checking for iconv declaration... install-shextern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
checking for library containing waddstr... no
configure: WARNING: no enhanced curses library found; disabling TUI
checking for library containing tgetent... no
configure: error: no termcap library found
make[1]: *** [configure-gdb] Error 1
make[1]: Leaving directory `/var/lib/gforge/chroot/home/users/mirror/tmp/gdb-7.5'
make: *** [all] Error 2

Eu configuro o gdb com:

[mirror@hugemeow gdb-7.5]$ ./configure --libdir=/var/lib/gforge/chroot/home/users/mirror/ins/ins-gdb/lib/


checking where to find the target readelf... host tool
checking where to find the target strip... host tool
checking where to find the target windres... host tool
checking where to find the target windmc... host tool
checking whether to enable maintainer-specific portions of Makefiles... no
checking whether -fkeep-inline-functions is supported... yes
configure: creating ./config.status
config.status: creating Makefile

essa biblioteca tempcap está lá como eu configurei para o gdb :

[mirror@hugemeow gdb-7.5]$ ls /var/lib/gforge/chroot/home/users/mirror/ins/ins-gdb/lib/
libtermcap.a
[mirror@hugemeow gdb-7.5]$ ls /var/lib/gforge/chroot/home/users/mirror/ins/ins-gdb/include/
termcap.h

Edit 1 : falhou, mesmo com as opções --includedir e --libdir ...

[mirror@hugemeow gdb-7.5]$ ./configure --includedir=/var/lib/gforge/chroot/home/users/mirror/ins/ins-gdb/include/  --libdir=/var/lib/gforge/chroot/home/users/mirror/ins/ins-gdb/lib/
make
    checking for library containing tgetent... no
configure: error: no termcap library found
make[1]: *** [configure-gdb] Error 1
make[1]: Leaving directory `/var/lib/gforge/chroot/home/users/mirror/tmp/gdb-7.5'
make: *** [all] Error 2

Edit 2 : Agora eu construo como Patrice Tisserand disse, mas também falhou, com uma mensagem de erro diferente da seguinte.

[mirror @ hugemeow gdb-7.5] $ CFLAGS = "- I / var / lib / gforge / chroot / home / usuários / mirror / ins / ins-gdb / include /" LDFLAGS = "- L / var / lib / gforge / chroot / home / usuários / espelho / ins / ins-gdb / lib / "./configure && make

make[1]: Entering directory `/var/lib/gforge/chroot/home/users/mirror/tmp/gdb-7.5'
Configuring in ./intl
configure: loading cache ./config.cache
configure: error: `CFLAGS' has changed since the previous run:
configure:   former value:  `-g -O2'
configure:   current value: `-I/var/lib/gforge/chroot/home/users/mirror/ins/ins-gdb/include/'
configure: error: `LDFLAGS' has changed since the previous run:
configure:   former value:  ` '
configure:   current value: ` -L/var/lib/gforge/chroot/home/users/mirror/ins/ins-gdb/lib/'
configure: error: in `/var/lib/gforge/chroot/home/users/mirror/tmp/gdb-7.5/intl':
configure: error: changes in the environment can compromise the build
configure: error: run `make distclean' and/or `rm ./config.cache' and start over
make[1]: *** [configure-intl] Error 1
make[1]: Leaving directory `/var/lib/gforge/chroot/home/users/mirror/tmp/gdb-7.5'
make: *** [all] Error 2

Respostas:


18

Instalar libncurses resolverá seu problema. Tente isto se você estiver usando qualquer sistema operacional Debian: sudo apt-get install libncurses5-dev.


2
Eu estava pensando nisso porque não percebi que havia instalado libncurseso pacote comum e não o pacote de desenvolvimento.
Nathaniel Waisbrot 23/09

Essa deve ser a resposta aceita. A propósito, no OpenSUSE, é ncurses-develpacote.
Anh Tuan

3
./configure --includedir=/var/lib/gforge/chroot/home/users/mirror/ins/ins-gdb/include/  --libdir=/var/lib/gforge/chroot/home/users/mirror/ins/ins-gdb/lib/

--includedir e --libdir são opções para instalação diretórios.

Para usar bibliotecas de outros diretórios, você pode tentar o seguinte:

CFLAGS="-I/var/lib/gforge/chroot/home/users/mirror/ins/ins-gdb/include/" LDFLAGS="-L/var/lib/gforge/chroot/home/users/mirror/ins/ins-gdb/lib/" ./configure 

agora eu construo como você me diz, mas também falhou, com uma mensagem de erro diferente da seguinte. veja edit 2
hugemeow 18/10/12

Olá, você tentou fazer distclean como sugerido na saída da mensagem?
Patrice Tisserand

1

Isso foi extremamente útil: http://archive09.linux.com/feature/121735

Este exemplo mostra como obter êxito quando você encontra uma biblioteca termcap nativa de destino ausente (a construção cruzada é um pouco diferente aqui - use ./configure --help em caso de dúvida):

cd ~/work/cross/gdb/downloads
wget ftp://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz
cd ..
tar xvzf downloads/termcap-1.3.1.tar.gz
mkdir -p ~/work/cross/gdb/build/termcap
cd ~/work/cross/gdb/build/termcap

export CC=powerpc-7450-linux-gnu-gcc
export RANLIB=powerpc-7450-linux-gnu-ranlib
../../termcap-1.3.1/configure --host=powerpc-7450-linux-gnu --prefix=$HOME/work/cross/termcap
make
make install

Você realmente não deseja substituir o destino assim, ele começará a procurar esse caminho em tempo de execução , no destino remoto onde esse caminho não existe. make DESTDIR=$HOME/work/cross installfunciona em torno esse problema, mas não ajudar a encontrar as dependências de construção
Ben Voigt
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.