在 Mingw 中构建 GDB 错误,配置:错误:未找到增强的 curses 库;禁用 TUI

Posted

技术标签:

【中文标题】在 Mingw 中构建 GDB 错误,配置:错误:未找到增强的 curses 库;禁用 TUI【英文标题】:Build GDB in Mingw error, configure: error: no enhanced curses library found; disable TUI 【发布时间】:2013-04-12 14:53:15 【问题描述】:

我尝试在 mingw 中构建 GDB 7.51 以进行跨平台调试,我发现 GDB 有 TUI 作为前端。无论如何,我用 --enable-tui 配置 GDB,然后总是停止并显示错误消息:

配置:错误:找不到增强的curses库;禁用 TUI

我通过谷歌检查了这个问题,然后我从 GNU 下载了 ncurses 源代码

ncurses 5.9

在我的 c:/mingw/msys/1.0/local/ 中构建并安装它

使用以下脚本语句运行 GDB 的配置

export PATH=$PREFIX/gccbinutils/bin/:/usr/local/bin:/usr/bin:/bin:/mingw/bin
export C_INCLUDE_PATH=/usr/local/include:/usr/local/include/ncursest:/usr/include:/c/mingw/include
export CPLUS_INCLUDE_PATH=/usr/local/include:/usr/local/include/ncursest:/usr/include:/c/mingw/include
export LIBRARY_PATH=/usr/local/lib:/usr/lib:/c/mingw/lib
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/c/mingw/lib
export LDFLAGS="-L/usr/local/lib -L/usr/lib -L/c/mingw/lib"
export LIBS="-lncursest"

$BUILD_MIPSGCCDIR/gdb/configure --prefix=$PREFIX/$pkg --target=$TARGET \
                --enable-tui \
                            --enable-curses \
                --enable-sim > $BUILDPATH/$TARGET$pkg.conf1.$argn.log  2>&1

但它不起作用。使用以下消息停止

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: error: no enhanced curses library found; disable TUI
make[1]: *** [configure-gdb] Error 1
make[1]: Leaving directory `/d/tools/buildmipsgcc/build_gdb'
make: *** [all] Error 2 

我已经搜索了 waddstr ,并确定它存在于我的 c:/mingw/msys/1.0/local/lib/libncursest.a 中。

【问题讨论】:

“它不起作用” 提供了关于哪些东西不起作用的零信息。展开您的问题。 感谢 Haroogan,我已添加“制作消息”。 你在libncursest.a同目录下有对应的*.la文件吗? @Haroogan 构建 ncurses 时不会生成 libncursest.la。我使用以下配置构建了 ncurses:CC="gcc -m32" LD="ld -m32" ./configure --prefix=$DEST_DIR/$pkg \ --without-cxx-binding --没有 ada --enable-warnings --enable-assertions --enable-reentrant --with-debug --with-normal --disable-home-terminfo --enable-sp-funcs --enable-term-driver - -enable-interop --with-pthread > $BUILDPATH/$TARGET$pkg.conf.$argn.log 2>&1 你肯定需要它,否则 Autotools 将无法找到它。你为ncurses 做了make install 吗?如果是,那么 *.la 应该已经被自动部署了。 【参考方案1】:

好的,让我们尝试通过提供手写libncurses.la来欺骗Autotools:

# libncurses.la - a libtool library file
# Generated by ltmain.sh (GNU libtool) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.

# The name that we can dlopen(3).
dlname=''

# Names of this library.
library_names=''

# The name of the static archive.
old_library='libncursest.a'

# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''

# Libraries that this one depends upon.
dependency_libs=''

# Names of additional weak libraries provided by this library
weak_library_names=''

# Version information for libncurses.
current=5
age=0
revision=9

# Is this an already installed library?
installed=yes

# Should we warn about portability when linking against -modules?
shouldnotlink=no

# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''

# Directory that this library needs to be installed in:
libdir='c:/mingw/msys/1.0/local/lib'

检查我提供的路径和名称,如果它们不同,请更改它们。如果它仍然不起作用,请报告,我会尝试进一步扩展它,直到我们最终修复它。

【讨论】:

还是报错。 libtool: 链接: `/usr/local/lib/libncursest.la' 不是有效的 libtool 存档 make[4]: *** [libbfd.la] 错误 1 ncursesgdb 中打开ltmain.sh 脚本并告诉我两者的版本。您可以通过找到这样的行来做到这一点VERSION=1.5.24 GDB:VERSION=2.2.7a,但 ncurses 中没有 ltmain.sh 刚刚更新了libncurses.la。现在试试。顺便说一句,在ncurses的安装阶段没有生成它的原因是它的分发没有提供ltmain.sh,但这很奇怪。 make需要很长时间,但问题似乎解决了。我更新了 libcurses.la,找到了pre-compiled ncurses package of mingw。将它安装到我的 /usr/local 目录。此 ncurses 包中的某些文件与我构建的 ncurses 具有不同的名称。无论如何,谢谢 Haroogan。

以上是关于在 Mingw 中构建 GDB 错误,配置:错误:未找到增强的 curses 库;禁用 TUI的主要内容,如果未能解决你的问题,请参考以下文章

“gdb.exe已停止工作”在windows7中

mingw 构建错误:未定义对 `__chkstk_ms' 的引用

使用Windows 10和MINGW编译器在VS Code上使用gdb调试器调试时出错

C/C++ - Codeblocks 调试 MinGW GDB STL (查看容器数据)配置教程(完整版)

cmake mingw-w64:尝试构建时出现奇怪的错误

Windows下CDT GDB调试