undefined reference to `stdscr'
Ich versuche zu kompilieren mein code in Ubuntu 11.10 und immer diese Fehler und vieles mehr.Bisher durch googeln ich denke, es ist ein linking-Fehler. Speziell, es gab Vorschläge, um sicherzustellen, dass Sie die richtigen Header und der link -lncurses-Bibliothek. Ich habe das schon getan. Ich bin noch immer dieser Fehler. Ich habe auch gelesen, dass kann ich installieren, sollte die libncurses, aber ich habe bereits installiert.
My MakeFile:
CPP = g++
CPPFLAGS = -c -Wall -g
LINK = g++
LDFLAGS_LINUX = -lpthread -lncurses
LDFLAGS = $(LDFLAGS_LINUX)
RM = rm
.SUFFIXES:
.SUFFIXES: .o .cpp
.cpp.o:
$(CPP) $(CPPFLAGS) $*.cpp -o $(SRC_DIR)$*.o
all: skygrid
skygrid: skygrid.o commServer.o pose.o robot.o
$(LINK) $(LDFLAGS) -o $@ $^
clean:
$(RM) -rf *.o skygrid
skygrid.o: skygrid.cpp definitions.h commServer.h pose.h robot.h
commServer.o: commServer.cpp commServer.h
pose.o: pose.cpp pose.h
robot.o: robot.cpp robot.h pose.h
Mein Fehler:
/home/fari/Desktop/FarahSkygrid/skygrid/src/skygrid.cpp:1094: undefined reference to `stdscr'
/home/fari/Desktop/FarahSkygrid/skygrid/src/skygrid.cpp:1094: undefined reference to `stdscr'
/home/fari/Desktop/FarahSkygrid/skygrid/src/skygrid.cpp:1094: undefined reference to `stdscr'
/home/fari/Desktop/FarahSkygrid/skygrid/src/skygrid.cpp:1094: undefined reference to `stdscr'
/home/fari/Desktop/FarahSkygrid/skygrid/src/skygrid.cpp:1104: undefined reference to `werase'
/home/fari/Desktop/FarahSkygrid/skygrid/src/skygrid.cpp:1106: undefined reference to `wprintw'
/home/fari/Desktop/FarahSkygrid/skygrid/src/skygrid.cpp:1107: undefined reference to `wprintw'
/home/fari/Desktop/FarahSkygrid/skygrid/src/skygrid.cpp:1109: undefined reference to `wprintw'
/home/fari/Desktop/FarahSkygrid/skygrid/src/skygrid.cpp:1111: undefined reference to `stdscr'
/home/fari/Desktop/FarahSkygrid/skygrid/src/skygrid.cpp:1111: undefined reference to `wgetch'
/home/fari/Desktop/FarahSkygrid/skygrid/src/skygrid.cpp:1116: undefined reference to `wtouchln'
- Die Konvention ist die Verwendung von CPP-für den Präprozessor, CPPFLAGS als Kennzeichen für den Präprozessor, CXX für C++ - compiler, und CXXFLAGS für flags CXX. Zuweisen von CPP als C++ compiler wird mangle machen die impliziten Regeln.
- Danke für alle die versucht haben zu helfen. Ich bin eigentlich nicht mehr funktioniert mit diesem code, und ich habe keinen Zugang zu Ihr. So, ich habe nicht versucht, etwas anderes als das, was Keith Thompson vorgeschlagen, und das war nicht für mich gearbeitet. Für andere die vielleicht mit den gleichen Problemen versuchen Sie bitte die anderen Antworten und markieren Sie nützlich, wenn Sie so sind.
- Ich hatte das gleiche problem und der fix war mit -l am Ende:
gcc -o hello hello.c -lncurses
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte dieses problem mit einer ncurses-Programm auf Centos 6.2. Es stellt sich heraus, dass ncurses ist manchmal aufgeteilt in zwei Bibliotheken
ncurses
undtinfo
. In meinem Fallstdscr
existiert inlibtinfo
, nicht in libncurses, so das hinzufügen-ltinfo
auf die link-Zeile an, nach-lncurses
, das problem gelöst.Ich weiß, Sie haben verschoben, aber für zukünftige Referenz: ich vermute, dass das problem bei der Platzierung des -l-argument. Versuchen:
Weitere Informationen finden Sie in der gcc-manual:
http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html
und diesen thread SO:
Die Platzierung der `-l' option im gcc
Da die Fehlermeldungen beziehen sich auf bestimmte Zeilen in Ihrer
skygrid.cpp
Quelldatei, Sie sind keine linker-Fehler.Müssen Sie wahrscheinlich hinzufügen
an die Spitze der Quellcode-Datei.
main': /home/fari/Desktop/test/skygrid.cpp:4: undefined reference to
stdscr' collect2: ld zurückgegeben, 1 exit status make: *** [skygrid] Fehler 1 fari@ubuntu:~/Desktop/test$user1246043,
Habe ich ein ähnliches problem. Im Grunde, ich kann nicht kompilieren mit g++ 4.5 oder g++ 4.6, also habe ich installiert g++ 4.4 und verwendet. Diese speziell mein problem gelöst mit dem verlinken ncursesw.
Kam ich mit dem gleichen problem beim Bau cscope 15.8.
Nach
./configure
ich zunächst den Fehler zu sagen "ncurses.h" nicht gefunden. Es ist, weil es keine libncurses-dev installiert auf meinem os.Nach der Installation libcurses-dev, ich Lauf
make
direkt. Dann habe Dutzende von den "undefined reference" Fehler.Nach dem Umbau von neu anfangen, diese Fehler waren verschwunden.
./configure
make
Ich vor ähnlichen problem, wenn Qt timer und ncurses: timeout Makros Ruine aus Qt-code =)
Lösung war
"#undef timeout"
nach#include <ncurses.h>
um zu verhindern, dass Makros aus arbeiten. Und wenn in einigen Fällen werden Sie müssen ncurses-timeout können Siewtimeout(stdscr,delay)
direkt.