GCC的/ usr / bin中/ LD:错误:无法找到-lncurses(gcc /usr/bin

2019-08-07 11:51发布

我运行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'

我找到了解决加入-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

但我迎接另一个错误:

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

还有以前的错误。

我花了最后2天搜索两个Ubuntu论坛和计算器。 任何帮助,将不胜感激。

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

ld: fatal error: no input files

Answer 1:

对于同样的问题,我没有任何人:我是缺少32个库; 我被编译其缺少lib32ncurses5-dev软件包64位服务器在32位。

在Ubuntu上我只是跑:

sudo apt-get install lib32ncurses5-dev


Answer 2:

首先,你应该链接时把库中的目标文件 。 而不是让他们在所有的源文件的汇编。

在此之后,如果ncurses的不是安装在标准的搜索文件夹,你需要指出的地方是,这与做链接-L命令行选项:

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


Answer 3:

尝试安装ncurses-static包也一样,如果你只有ncurses-devel安装在你的Ubuntu操作系统软件包。

如果解决您的问题,再加上如果添加@约阿希姆的编辑指令,你有了一个很好的开始。

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解决您的问题。

仅供参考。 在LD_LIBRARY_PATH环境变量包含的路径,冒号分隔列表链接器在运行时使用,以解决库的依赖。 这些路径将在标准库路径优先/lib/usr/lib 。 该标准的路径依然会被搜索,但只在路径列表后LD_LIBRARY_PATH已用完。

用最好的方式LD_LIBRARY_PATH立即执行程序之前设置它的命令行或脚本上。 这样,您就可以保持新LD_LIBRARY_PATH从系统的其余部分隔离,即本地运行的外壳程序实例当前运行。

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


文章来源: gcc /usr/bin/ld: error: cannot find -lncurses