1
我想在ncurses中第一次嘗試,但我在編譯我的源代碼時遇到問題。據我所知,ncurses被安裝並在正確的目錄中。g ++找不到ncurses.h儘管它正在安裝
我的makefile是超級簡單:
.cpp :
g++ -Wall -g -o $* $*.cpp -std=c++11 -lncurses
,這裏是我的輸出,當我嘗試locate ncurses.h
$ locate ncurses.h
/usr/include/ncursesw/ncurses.h
,當我檢查,看看它的安裝
$ dpkg -l | grep ncurses
ii libncurses5:amd64 5.9+20140118-1ubuntu1 amd64 shared libraries for terminal handling
ii libncursesw5:amd64 5.9+20140118-1ubuntu1 amd64 shared libraries for terminal handling (wide character support)
ii libncursesw5-dev:amd64 5.9+20140118-1ubuntu1 amd64 developer's libraries for ncursesw
ii mtr-tiny 0.85-2 amd64 Full screen ncurses traceroute tool
ii ncurses-base 5.9+20140118-1ubuntu1 all basic terminal type definitions
ii ncurses-bin 5.9+20140118-1ubuntu1 amd64 terminal-related programs and man pages
ii ncurses-term 5.9+20140118-1ubuntu1 all additional terminal type definitions
但g ++告訴我這個,當我試着製作
bankacct.cpp:18:29: fatal error: ncurses.h: No such file or directory
compilation terminated.
不幸的是,我沒有root權限,我需要能夠在這臺機器上編譯。我有什麼選擇?
我試過,包括<ncursesw/ncurses.h>
基於來自其他用戶的建議,但現在G ++是給我這個錯誤:
$ make bankacct
g++ -Wall -g -o bankacct bankacct.cpp -std=c++11 -lncurses
/usr/bin/ld: cannot find -lncurses
,如果我嘗試刪除-lncurses
它給了我這樣的:
$ make bankacct
g++ -Wall -g -o bankacct bankacct.cpp -std=c++11
/tmp/cc8rPQfK.o: In function `main':
bankacct.cpp:23: undefined reference to `initscr'
現在我試過鏈接庫。下面是我所做的:
$ locate libncurse
/lib/x86_64-linux-gnu/libncurses.so.5
/lib/x86_64-linux-gnu/libncurses.so.5.9
/lib/x86_64-linux-gnu/libncursesw.so.5
/lib/x86_64-linux-gnu/libncursesw.so.5.9
/usr/lib/x86_64-linux-gnu/libncurses++w.a
/usr/lib/x86_64-linux-gnu/libncursesw.a
/usr/lib/x86_64-linux-gnu/libncursesw.so
/usr/share/doc/libncurses5
/usr/share/doc/libncursesw5
/usr/share/doc/libncursesw5-dev
/var/lib/dpkg/info/libncurses5:amd64.list
/var/lib/dpkg/info/libncurses5:amd64.md5sums
/var/lib/dpkg/info/libncurses5:amd64.postinst
/var/lib/dpkg/info/libncurses5:amd64.postrm
/var/lib/dpkg/info/libncurses5:amd64.shlibs
/var/lib/dpkg/info/libncurses5:amd64.symbols
/var/lib/dpkg/info/libncursesw5-dev:amd64.list
/var/lib/dpkg/info/libncursesw5-dev:amd64.md5sums
/var/lib/dpkg/info/libncursesw5-dev:amd64.postinst
/var/lib/dpkg/info/libncursesw5:amd64.list
/var/lib/dpkg/info/libncursesw5:amd64.md5sums
/var/lib/dpkg/info/libncursesw5:amd64.postinst
/var/lib/dpkg/info/libncursesw5:amd64.postrm
/var/lib/dpkg/info/libncursesw5:amd64.shlibs
/var/lib/dpkg/info/libncursesw5:amd64.symbols
於是我想我的Makefile的兩個變化:
g++ -Wall -g -L/usr/lib/x86_64-linux-gnu/ -o $* $*.cpp -std=c++11 -lncurses
和
g++ -Wall -g -L/lib/x86_64-linux-gnu/ -o $* $*.cpp -std=c++11 -lncurses
仍然給我的錯誤undefined reference to 'initscr'
(不-lncurses
)或/usr/bin/ld: cannot find -lncurses
(with it)
你是否在你的源代碼中包含頭文件像'#include'? –
我試過'#include'和'#include ',g ++告訴我'ncurses.h:沒有這樣的文件或目錄。我現在的整個程序基本上只是'#include ' –
w在'/ usr/include/ncursesw /'旁邊做了什麼? – Flint