最近我决定重新构建一个CLFS机器http://www.clfs.org,并且在3.0.0 SYSTEMD的步骤5.5。我们被告知要运行make -C include
然后make -C progs tic
。我在最后一个命令失败了。我错过了任何包裹,还是我做错了什么?
我使用ArchLinux作为我在Windows XP上运行的VMWare中的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)
^
答案 0 :(得分:2)
错误消息指向y
符号
wmouse_trafo
的原型使用bool
,配置脚本应该具有(给定编译器版本用于CLFS)等同于c99 _Bool
(这应该不是问题)。您可以通过
查看编译器看到的内容make -C ncurses lib_gen.i
并在wmouse_trafo
中寻找ncurses/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
中解决了