0

最近我决定重试构建一个 CLFS 机器http://www.clfs.org并且我在 3.0.0 SYSTEMD 的第 5.5 步。我们被告知要运行make -C include,然后make -C progs tic。我在最后一个命令失败了。我错过了任何包裹,还是我做错了什么?

我在 Windows 10 上运行的 VMWare 中使用 ArchLinux 作为我的 CLFS 主机。

这是我正在查看的命令页面:http ://clfs.org/files/BOOK/3.0.0/SYSTEMD/view/x86_64/cross-tools/ncurses.html

这是我运行最后一个命令时控制台的输出:

    In file included from ../ncurses/curses.priv.h:283:0,
    from ../ncurses/lib_gen.c:19:_33528.c:835:15: error: expected ')' before 'int'
    ../include/curses.h:1594:56: note: in definition of macro 'mouse_trafo'
    #define mouse_trafo(y,x,to_screen) wmouse_trafo(stdscr,y,x,to_screen)
                                                           ^
4

1 回答 1

2

错误消息指向y符号,

  • 这可能在您系统上的某些头文件中(错误)定义。
  • 除了杂散的#define 之外,关于该行的唯一有趣的事情是wmouse_trafouses的原型bool,配置脚本应该具有(给定用于CLFS 的编译器版本)等同于c99 _Bool(这应该不是问题)。

您可以通过执行查看编译器看到的内容

make -C ncurses lib_gen.i

wmouse_trafoncurses/lib_gen.i.

例如,我看到它提到过两次:

extern _Bool wmouse_trafo (const WINDOW*, int*, int*, _Bool);
extern _Bool mouse_trafo (int*, int*, _Bool);

 _Bool (mouse_trafo) (int * a1, int * a2, _Bool z)
{
 ; return wmouse_trafo(stdscr,a1,a2,z);
}

杂散分号不是问题,但如果交叉编译器出现问题,它可能会_Bool丢失。

CLFS 3.0 的说明使用gcc 4.8.3(所有部分的版本都很重要)。但是,此处引用的错误消息看起来像是由于 gcc 5 而导致的最近报告——在ncurses 6.0中已解决

于 2015-07-30T20:48:50.697 回答