gcc / usr / bin / ld:错误:找不到-lncurses

我正在运行Ubuntu 12.04,目前我正在开发一个涉及C,OpenGL,茶壶和input法的项目。

当我决定把箭头键作为input时,问题就开始了。 我检查了箭头键的关键代码,但所有的箭头返回0.我抬头如何得到这个工作,我发现conio.h。 不幸的是,这是一个旧的DOS头,不适用于Linux。 然后我find了一个叫做ncurses的替代品。

在安装必要的库之后,紧跟着构build指令,我在main.c源文件中包含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' 

我通过添加-lncurses到makefile来find一个修复程序,如下所示:

 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 

但是我受到另一个错误的迎接:

 /usr/bin/ld: error: cannot find -lncurses 

以及以前的错误。

我花了最近2天searchUbuntu论坛和StackOverFlow。 任何帮助,将不胜感激。

PS我不知道这是否是重要的,但当我尝试运行/ usr / bin / ld我得到这个错误:

 ld: fatal error: no input files 

Solutions Collecting From Web of "gcc / usr / bin / ld:错误:找不到-lncurses"

对于有同样问题的人,我有:我错过了32位库; 我正在64位服务器上编译缺少lib32ncurses5-dev软件包的32位数据。

在Ubuntu上,我只是跑了:

 sudo apt-get install lib32ncurses5-dev 

首先,链接时应该将对象文件放在对象文件之后 。 在源文件的编译中根本没有它们。

之后,如果ncurses没有安装在一个标准的搜索文件夹中,你需要指向链接器的位置,这是通过-L命令行选项完成的:

 gcc main.o -o main -L/location/of/ncurses -lm -lGL -lGLU -lglut -lncurses 

如果你的Ubuntu操作系统只安装了ncurses-devel软件包,那么也可以尝试安装ncurses-static软件包。

如果这样可以解决你的问题,再加上@ Joachim的编译指令,那么你就是一个很好的开始。

 gcc main.o -o main -L/location/of/ncurses -lm -lGL -lGLU -lglut -lncurses 

链接器在其搜索路径中找不到您的共享库。 如果将共享库所在的目录添加到LD_LIBRARY_PATH环境变量,则链接程序应该找到它并能够链接到它。 在这种情况下,您可以省略-L选项gcc:

 gcc main.o -o main -lm -lGL -lGLU -lglut -lncurses 

它应该编译好。

编辑:很apt-get install libncurses5-dev知道apt-get install libncurses5-dev修复您的问题。

仅供参考。 LD_LIBRARY_PATH环境变量包含链接器在运行时用来解决库依赖性的冒号分隔列表。 这些路径将优先于标准库路径/lib/usr/lib 。 标准路径仍将被搜索,但仅在LD_LIBRARY_PATH中的路径列表已用尽之后。

使用LD_LIBRARY_PATH的最好方法是在执行程序之前立即在命令行或脚本中进行设置。 通过这种方式,您可以将新的LD_LIBRARY_PATH与系统的其余部分保持隔离,即保持当前正在运行的正在运行的shell实例。

 $ export LD_LIBRARY_PATH="/path/to/libncurses/library/directory/:$LD_LIBRARY_PATH" $ gcc main.o -o main -lm -lGL -lGLU -lglut -lncurses