刚刚在chinaunix注册的博客,心情非常激动。开这个博客主要是想记录下自己学习Linux心路历程和成长足迹。
为了庆祝此博客开张,先发个短小的技术总结吧。
今天学习Linux终端编程,使用的是C语言,编译指令和编译报错如下所示:
cary@funk:~/program$ gcc -Wall menu4.c -o menu
/tmp/ccG5QHud.o: In function `getchoice':
menu4.c:(.text+0x2b9): undefined reference to `setupterm'
menu4.c:(.text+0x2c5): undefined reference to `tigetstr'
menu4.c:(.text+0x2d4): undefined reference to `tigetstr'
menu4.c:(.text+0x2f9): undefined reference to `tputs'
menu4.c:(.text+0x312): undefined reference to `tparm'
menu4.c:(.text+0x32a): undefined reference to `tputs'
menu4.c:(.text+0x36a): undefined reference to `tparm'
menu4.c:(.text+0x382): undefined reference to `tputs'
menu4.c:(.text+0x420): undefined reference to `tparm'
menu4.c:(.text+0x438): undefined reference to `tputs'
menu4.c:(.text+0x481): undefined reference to `tputs'
collect2: ld returned 1 exit status
cary@funk:~/program$
经过网上查阅相关资料,发现代码本身并没有错,只需要在编译指令中添加 -lcurses即可,如下所示:
gcc -Wall -lcurses menu4.c -o menu
原来程序中调用了curses.h函数库。只有标准C库libc不用指定,其他像libcurses, libm都要用-l选项指定。
curses.h函数库是为了适应网络上各式各样的终端类型 (terminal), 特别发展出一套专门用来处理 UNIX 上光标移动及屏幕显示的函数库. 利用这个函数库,可以写出像 elm 般利用方向键来移动光棒位置的程序.
cureses 最早是由柏克莱大学的 Bill Joy 及 Ken Arnold 所发展出来的.当时发展此一函数库主要原因是为了提高程序对不同终端的相容性而设计的. 因此, 利用 curses 发展出来的程序将和您所使用的终端无关. 也就是说, 您不必担心您的程序因为换了一部终端而无法使用. 这对程序设计者而言, 尤其是网络上程序的撰写, 是件相当重要的一件事.
阅读(2509) | 评论(1) | 转发(0) |