Pourquoi ne puis-je pas trouver la bibliothèque termcap lorsque je crée gdb?

10

make puis échoué avec:

configure: erreur: aucune bibliothèque termcap trouvée , mais cette bibliothèque termcap est juste là, pourquoi ne peut-on pas la trouver?

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

Je configure gdb avec:

[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

cette bibliothèque tempcap est juste là comme je l'ai configuré pour 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

Édition 1 : échoué non plus, même avec l'option --includedir et --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 : Maintenant, je construis comme Patrice Tisserand l'a dit, mais a également échoué, avec un message d'erreur différent comme suit.

[mirror @ hugemeow gdb-7.5] $ 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 && 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
hugemeow
la source

Réponses:

18

L'installation de libncurses résoudra votre problème. Essayez ceci si vous utilisez un système d' exploitation Debian: sudo apt-get install libncurses5-dev.

suhastheju
la source
2
Je me cognais la tête à ce sujet parce que je n'avais pas remarqué que j'avais installé plain libncurseset pas le package de développement.
Nathaniel Waisbrot
Cela devrait être la réponse acceptée. Soit dit en passant sur OpenSUSE, c'est ncurses-develpackage.
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 et --libdir sont des options pour les répertoires d' installation .

Pour utiliser les bibliothèques d'un autre répertoire, vous pouvez essayer de faire ce qui suit:

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 
Patrice Tisserand
la source
maintenant je construis comme vous me le dites, mais a également échoué, avec un message d'erreur différent comme suit. voir edit 2
hugemeow
bonjour, avez-vous essayé de faire distclean comme suggéré dans la sortie du message?
Patrice Tisserand
1

Cela a été extrêmement utile: http://archive09.linux.com/feature/121735

Cet exemple montre comment réussir lorsque vous trouvez qu'une bibliothèque termcap native cible est manquante (la construction croisée est quelque peu différente ici - utilisez ./configure --help en cas de doute):

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
Jamie
la source
Vous ne voulez vraiment pas remplacer la cible comme ça, il commencera à chercher ce chemin au moment de l'exécution , sur la cible distante où ce chemin n'existe pas. make DESTDIR=$HOME/work/cross installcontourne ce problème, mais n'aide pas à trouver les dépendances de construction
Ben Voigt