Ich versuche, ein Programm mit Ncurses unter Linux zu entwickeln. Ich kann nicht einmal das Hello World-Beispiel kompilieren. Hier ist der Code:Nicht definierte Referenz bei der Verwendung von Ncurses unter Linux
#include <curses.h>
int main()
{
initscr();
printw("Hello, world.");
refresh();
getch();
endwin();
return 0;
}
Wenn ich zu kompilieren versuchen, erhalte ich:
hello.c:(.text+0x12): undefined reference to `initscr'
Für jede dieser genannten Funktionen.
Ich installierte ncurses über apt-get und auch durch die Quellen herunterzuladen und zu kompilieren, Installation etc.
Ich habe #include
versucht, sowohl curses.h
und ncurses.h
.
Was ist los?
Warum '$ gcc -lncurses -o Hallo hallo.c' funktioniert nicht aber' $ gcc -o hallo hallo.c -lncurses' tut? – rootkea
@rootkea Da der Linker Objekte in der Reihenfolge verarbeitet, in der sie in der Befehlszeile angezeigt werden. Wenn es zuerst "Hallo" sieht, merkt es sich alle Symbole, die es benötigt, und dann, wenn es die 'ncurses'-Bibliothek sieht, löst es diese Symbole mit Hilfe dessen, was es findet, auf. Wenn 'ncurses' zuerst kommt, sieht es eine Reihe von Symbolen, sagt aber" Ich brauche keine von denen "und verwirft sie. Siehe die [Dokumentation] (https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#index-l-1172) oder [andere SO-Aufgaben] (http://stackoverflow.com/questions/45135)/linker-order-gcc) für Details. –