Yrr*_*j10 31 c linux ubuntu gcc ncurses
我正在运行Ubuntu 12.04,我目前正在开发一个涉及C,OpenGL,茶壶和输入法的项目.
当我决定使用箭头键作为输入时,问题就出现了.我检查了箭头键的键代码,但所有箭头都返回0.我查找了如何使这个工作,我找到了conio.h.不幸的是,它是一个旧的DOS标头,不适用于Linux.然后我找到了一个名为ncurses的替代品.
安装必要的库后,按照构建说明,我在main.c源代码中使用#included curses.h.当我第一次尝试使用gcc编译时,我收到以下错误:
main.o:main.c:function _Key: error: undefined reference to 'stdscr'
main.o:main.c:function _Key: error: undefined reference to 'wgetch'
main.o:main.c:function _Key: error: undefined reference to 'stdscr'
main.o:main.c:function _Key: error: undefined reference to 'wgetch'
Run Code Online (Sandbox Code Playgroud)
我通过将-lncurses添加到makefile中找到了修复,如下所示:
SOURCES=main.c
main: main.o
gcc -lm -lGL -lGLU -lglut -lncurses main.o -o main
main.o: main.c
gcc -lm -lGL -lGLU -lglut -c main.c
Run Code Online (Sandbox Code Playgroud)
但是另一个错误让我受到了欢迎:
/usr/bin/ld: error: cannot find -lncurses
Run Code Online (Sandbox Code Playgroud)
以及以前的错误.
我花了最近两天的时间搜索Ubuntu论坛和StackOverFlow.任何帮助,将不胜感激.
PS我不知道这是否重要但是当我尝试运行/ usr/bin/ld时出现此错误:
ld: fatal error: no input files
Run Code Online (Sandbox Code Playgroud)
Dal*_*ale 46
对于遇到同样问题的人:我错过了32位库; 我在64位服务器上编译了32位,缺少lib32ncurses5-dev软件包.
在Ubuntu上我只是跑了:
sudo apt-get install lib32ncurses5-dev
Run Code Online (Sandbox Code Playgroud)
首先,链接时应将库放在目标文件之后。并且在源文件的编译中根本没有它们。
之后,如果 ncurses 未安装在标准搜索文件夹中,您需要向链接器指出它的位置,这是通过-L命令行选项完成的:
gcc main.o -o main -L/location/of/ncurses -lm -lGL -lGLU -lglut -lncurses
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41396 次 |
| 最近记录: |