微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

binutils-gdb编译找不到ncurses

如何解决binutils-gdb编译找不到ncurses

我正在尝试根据本教程为 i686-elf 目标编译 binutils:

我刚刚添加--enable-tui 选项,以便在 gdb 中获得支持

我做了以下事情:

# get sources
git clone git://sourceware.org/git/binutils-gdb.git

# store settings
export PREFIX="`pwd`/opt/cross"
export TARGET=i686-elf
export PATH="$PREFIX/bin:$PATH"

# create build folder
mkdir build-binutils
cd build-binutils

# run configure
../binutils-gdb/configure -target=$TARGET --prefix="$PREFIX" --with-sysroot --disable-nls --disable-werror --enable-tui

# make
make

这会运行一段时间并以以下错误终止:

checking for library containing socketpair... (cached) none required
checking for ld used by GCC... (cached) ld
checking if the linker (ld) is GNU ld... (cached) yes
checking for shared library run path origin... (cached) done
checking for iconv... (cached) yes
checking for iconv declaration... (cached) 
         extern size_t iconv (iconv_t cd,char * *inbuf,size_t *inbytesleft,char * *outbuf,size_t *outbytesleft);
checking for library containing waddstr... (cached) no
configure: error: no enhanced curses library found; disable TUI
make[1]: *** [Makefile:11329: configure-gdb] Error 1
make[1]: Leaving directory '/home/noexpandtab/dev/build-binutils'
make: *** [Makefile:853: all] Error 2

对我来说,似乎找不到 ncurses 库。

我运行 Debian 10 并安装了以下附加软件包:

  • libncurses-dev
  • ncurses-base
  • ncurses-doc
  • libncurses5-dev

我需要安装额外的软件包吗?还是我缺少配置脚本的一些选项?

解决方法

您正在交叉编译到与您正在运行的架构不同的架构 (i686-elf) - 问题中提到的 $TARGET。 gdb 必须与为该架构构建的库链接。

Debian 提供了 ncurses packages,它在当前架构上运行,但没有为交叉编译的应用程序提供合适的包。所以你可以自己做这件事。

当交叉编译 ncurses 时,您必须记住它的一部分在当前架构上构建/运行(生成源文件供交叉编译器编译)。这在环境中定义为 $BUILD_CC(而不是 $CC),您在阅读 mingw cross-compiling 的脚本时可能会看到。 INSTALL 文件(在 ncurses 源中)中有一个部分概述了该过程。

没有教程(不管怎样,这都是题外话),但其他人已经阅读了说明和交叉编译的 ncurses,最近的 bug report 证明了这一点。

,

我重试了整个编译,突然就成功了!我测试了一下,我认为我发现了我的错:我在没有 configure 的情况下执行了 --enable-tui,其中 make 起作用。然后我在同一个文件夹中用 configure 执行 --enable-tui 而没有清理它。清理或在新文件夹中运行后,它会编译。

感谢一位发帖删除opt/cross内容的用户。 (评论本身已经以某种方式被删除了。)这不是解决方案,但引导我走向正确的方向。

TL;DR:在再次使用不同参数运行 configure 之前清理构建文件夹。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。