Почему я не могу найти библиотеку termcap при сборке GDB?

10

make а затем не удалось с:

configure: error: библиотека termcap не найдена , но библиотека lib termcap просто есть, почему не удается ее найти?

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

Я настраиваю GDB с:

[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

эта библиотека tempcap как раз там, где я настроил 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

Редактировать 1 : тоже не удалось, даже с опциями --includedir и --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

Редактировать 2 : Теперь я строю, как сказал Патрис Тиссеран, но тоже не удалось, с другим сообщением об ошибке, как показано ниже.

[mirror @ greatmeow 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
источник

Ответы:

18

Установка libncurses решит вашу проблему. Попробуйте это , если вы используете какой - либо Debian ОС: sudo apt-get install libncurses5-dev.

suhastheju
источник
2
Я бился головой об этом, потому что не заметил, что установил обычный libncursesпакет, а не пакет разработки.
Натаниэль Вайсброт
Это должен быть принятый ответ. Кстати на OpenSUSE это ncurses-develпакет.
Ань Туан
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 и --libdir варианты для установки каталогов.

Чтобы использовать библиотеки из других каталогов, вы можете попробовать сделать следующее:

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 
Патрис Тисеранд
источник
Теперь я строю, как вы говорите, но также не удалось, с другим сообщением об ошибке, как показано ниже. см. правку 2
огромный день
привет, вы пытались сделать distclean, как предложено в выводе сообщения?
Патрис Тиссеран и
1

Это было чрезвычайно полезно: http://archive09.linux.com/feature/121735

В этом примере показано, как добиться успеха, когда вы обнаружите, что библиотека termcap, встроенная в цель, отсутствует (кросс-сборка здесь несколько иная - используйте ./configure --help, если сомневаетесь):

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
Джейми
источник
Вы действительно не хотите переопределять цель таким образом, она начнет искать этот путь во время выполнения , на удаленной цели, где этот путь не существует. make DESTDIR=$HOME/work/cross installобходит эту проблему, но не помогает найти зависимости для сборки
Бен Фойгт