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

后端 未结 3 622
半阙折子戏
半阙折子戏 2020-12-24 12:03

I am running Ubuntu 12.04 and I\'m currently working on a project involving C, OpenGL, a teapot and input methods.

The problem started when I decided to have arrow k

3条回答
  •  北海茫月
    2020-12-24 12:30

    Try installing the ncurses-static package too, if you have only the ncurses-devel package installed in your Ubuntu OS.

    If that solves your problem, plus if you add @Joachim's compiling instructions, you are off to a great start.

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

    The linker can't find your shared library in it's search path. If you add the directory where your shared lib is to the LD_LIBRARY_PATH environment variable the linker should find it and be able to link against it. In that case you could omit the -L option to gcc:

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

    And it should compile fine.

    EDIT: Good to know that apt-get install libncurses5-dev fixes your problem.

    FYI. The LD_LIBRARY_PATH environment variable contains a colon separated list of paths that the linker uses to resolve library dependencies at run time. These paths will be given priority over the standard library paths /lib and /usr/lib. The standard paths will still be searched, but only after the list of paths in LD_LIBRARY_PATH has been exhausted.

    The best way to use LD_LIBRARY_PATH is to set it on the command line or script immediately before executing the program. This way you can keep the new LD_LIBRARY_PATH isolated from the rest of your system i.e. local to the current running running instance of shell.

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

提交回复
热议问题