Ich versuche in ncurses zum ersten Mal zu experimentieren, aber ich habe Probleme beim Kompilieren meines Quellcodes. Soweit ich das beurteilen kann, ist Ncurses installiert und in den richtigen Verzeichnissen.g ++ kann ncurses.h nicht finden, obwohl es installiert ist
Mein Make-Datei ist super einfach:
.cpp :
g++ -Wall -g -o $* $*.cpp -std=c++11 -lncurses
und hier ist meine Ausgabe, wenn ich versuche zu locate ncurses.h
$ locate ncurses.h
/usr/include/ncursesw/ncurses.h
und wenn ich überprüfen, um zu sehen, ob es
$ 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
installiert ist aber g ++ sagt mir das, wenn ich versuche,
zu machenLeider habe ich keinen Root-Zugang und muss auf diesem Rechner kompilieren können. Was sind meine Möglichkeiten?
Ich habe versucht, einschließlich <ncursesw/ncurses.h>
auf Anregungen von anderen Benutzern, aber g jetzt ++ wird mir diesen Fehler geben:
$ make bankacct
g++ -Wall -g -o bankacct bankacct.cpp -std=c++11 -lncurses
/usr/bin/ld: cannot find -lncurses
und wenn ich -lncurses
versuchen zu entfernen es gibt mir diese:
$ 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'
Jetzt habe ich versucht, die Bibliotheken zu verknüpfen. Hier ist, was ich getan habe:
$ 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
So dann habe ich versucht, zwei Variationen meiner Make-Datei:
g++ -Wall -g -L/usr/lib/x86_64-linux-gnu/ -o $* $*.cpp -std=c++11 -lncurses
und
g++ -Wall -g -L/lib/x86_64-linux-gnu/ -o $* $*.cpp -std=c++11 -lncurses
, die gab mir noch die Fehler undefined reference to 'initscr'
(ohne -lncurses
) oder /usr/bin/ld: cannot find -lncurses
(mit ihm)
hinzufügen Fügen Sie den Header wie '#include' in Ihren Quellcode ein? –
Ich habe versucht, beide '#include' und '# include ' und g ++ sagt mir 'ncurses.h: keine solche Datei oder Verzeichnis'. Mein gesamtes Programm ab jetzt ist im Wesentlichen nur '#include ' –
was ist das, was neben '/ usr/include/ncursesw /'? – Flint