我只是在 ARM 处理器上花了几个小时,试图让它工作,因为接受的答案对我不起作用。
以下是我的发现:
显然
gcc -static hello_curses.c -o curses -lncurses
适用于 x64 处理器,但不适用于 ARM 处理器。
当我尝试使用上述行时,我仍然得到了 OP 的所有“未定义的引用错误”(以及更多)。
您还需要链接 libtinfo.a,并注意顺序很重要。
这是有效的正确命令行:
gcc -static hello_curses.c -o curses -lncurses -ltinfo
如果你混淆了序列,那么它就行不通了......
gcc -static hello_curses.c -o curses -ltinfo -lncurses
未定义对“unctrl”的引用
当然,如果您使用 :lib 语法,这也有效
这编译
gcc -static hello_curses.c -o curses -l:libncursesw.a -l:libtinfo.a
这不编译
gcc -static hello_curses.c -o curses -l:libtinfo.a -l:libncursesw.a
哦,我多么喜欢gcc……
这个程序永远不应该被允许从幼儿园毕业
(.text+0x2a8):对cur_term'
/usr/lib/gcc/arm-linux-gnueabihf/4.8/../../../arm-linux-gnueabihf/libncursesw.a(lib_color.o):
In function
init_pair 的
未定义引用:(.text+0x2ac):对 init_pair 的未定义引用:(.text+0x50a):对 init_pair 的cur_term'
/usr/lib/gcc/arm-linux-gnueabihf/4.8/../../../arm-linux-gnueabihf/libncursesw.a(lib_color.o):
In function
未定义引用tparm'
/usr/lib/gcc/arm-linux-gnueabihf/4.8/../../../arm-linux-gnueabihf/libncursesw.a(lib_color.o):
In function
:(.text+0x518):对
_nc_putp'
/usr/lib/gcc/arm-linux-gnueabihf/4.8/../../../arm-linux-gnueabihf/libncursesw.a(lib_color.o):
In function
init_color的未定义引用': (.text+0x552): 对
cur_term'
/usr/lib/gcc/arm-linux-gnueabihf/4.8/../../../arm-linux-gnueabihf/libncursesw.a(lib_color.o):
In function
init_color 的未定义引用': (.text+0x556): 对 init_color 的未定义引用
cur_term'
/usr/lib/gcc/arm-linux-gnueabihf/4.8/../../../arm-linux-gnueabihf/libncursesw.a(lib_color.o):
In function
': (.text+0x5e4): 对 init_color 的未定义引用
tparm'
/usr/lib/gcc/arm-linux-gnueabihf/4.8/../../../arm-linux-gnueabihf/libncursesw.a(lib_color.o):
In function
': (.text+0x5f2): 未定义引用to
_nc_putp'
/usr/lib/gcc/arm-linux-gnueabihf/4.8/../../../arm-linux-gnueabihf/libncursesw.a(lib_color.o):
In function
can_change_color': (.text+0x740): undefined reference to
cur_term'
/usr/lib/gcc/arm-linux-gnueabihf/4.8/../../../arm-linux-gnueabihf/libncursesw.a(lib_color.o):
In function
can_change_color': (.text+0x744): undefined reference to
cur_term'
/usr/lib/gcc/arm-linux-gnueabihf/4.8/../../../arm-linux-gnueabihf/libncursesw.a(lib_color.o):
In function
has_colors': (.text+0x768): undefined reference to
cur_term'
/usr/lib/gcc/arm-linux-gnueabihf/4.8/../../../arm-linux-gnueabihf/libncursesw.a(lib_color.o):
In function
has_colors': (.text+0x76c):未定义对
cur_term'
/usr/lib/gcc/arm-linux-gnueabihf/4.8/../../../arm-linux-gnueabihf/libncursesw.a(lib_color.o):
In function
color_content' 的引用:(.text+0x7c2):
未定义的引用cur_term'
/usr/lib/gcc/arm-linux-gnueabihf/4.8/../../../arm-linux-gnueabihf/libncursesw.a(lib_color.o):(.text+0x7c6):
more undefined references to
cur_term' 遵循 /usr/lib/gcc/arm-linux-gnueabihf/4.8/../../../arm-linux-gnueabihf/libncursesw.a(lib_color.o):在函数_nc_do_color': (.text+0x8de): undefined reference to
tparm' /usr/lib /gcc/arm-linux-gnueabihf/4.8/../../../arm-linux-gnueabihf/libncursesw.a(lib_color.o):在函数 tputs _nc_do_color': (.text+0x8e6): undefined reference to
'/usr/lib/gcc/arm-linux- gnueabihf/4.8/../../../arm-linux-gnueabihf/libncursesw.a(lib_color.o):在函数tputs'/usr/lib/gcc/arm-linux-gnueabihf/4.8 _nc_do_color': (.text+0x958): undefined reference to
/../ ../../arm-linux-gnueabihf/libncursesw.a(lib_color.o):在函数 tputs set_foreground_color': (.text+0x62): undefined reference
to
' /usr/lib/gcc/arm-linux-gnueabihf/4.8/../../../arm -linux-gnueabihf/libncursesw.a(lib_color.o):在函数 tputs set_background_color': (.text+0xa2): undefined reference
to
'/usr/lib/gcc/arm-linux-gnueabihf/4.8/../../../arm-linux-gnueabihf/libncursesw。 a(lib_hline.o):在函数中whline': (.text+0xec): undefined reference to
acs_map' /usr/lib/gcc/arm-linux-gnueabihf/4.8/../../../arm-linux-gnueabihf/libncursesw.a(lib_hline.o): 在函数whline': (.text+0xf0): undefined reference to
acs_map' /usr/lib/ gcc/arm-linux-gnueabihf/4.8/../../../arm-linux-gnueabihf/libncursesw.a(lib_add_wch.o):在函数wadd_wch': (.text+0x4fe): undefined reference to
TABSIZE'/usr/lib/gcc/arm-linux-gnueabihf /4.8/../../../arm-linux-gnueabihf/libncursesw.a(lib_add_wch.o):在函数wadd_wch': (.text+0x502): undefined reference to
TABSIZE'/usr/lib/gcc/arm-linux-gnueabihf/4.8/../. ./../arm-linux-gnueabihf/libncursesw.a(lib_add_wch.o): 在函数wecho_wchar': (.text+0x6d8): undefined reference to
TABSIZE' /usr/lib/gcc/arm-linux-gnueabihf/4.8/../../../arm- linux-gnueabihf/libncursesw.a(lib_add_wch.o):在函数wecho_wchar': (.text+0x6dc): undefined reference to
TABSIZE' /usr/lib/gcc/arm-linux-gnueabihf/4.8/../../../arm-linux-gnueabihf/libncursesw.a (lib_wunctrl.o):在函数中wunctrl': (.text+0x30): undefined reference to
unctrl' collect2:错误:ld 返回 1 退出状态