App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Programmier(Kompilier-)problem in C unter Linux
- Ersteller Minime
- Erstellt am
Minime
Commander
- Mitglied seit
- 11.11.2001
- Beiträge
- 193
- Renomée
- 0
Ich hab ein Problem unter SuSE 7.3 ein C-Queltext zu kompilieren.
Das „Programm“ sieht wie folgt aus:
#include <curses.h>
int main()
{
int c,x=1;
while(x)
{
initscr(); /*curses initialisieren*/
keypad(stdscr,TRUE);
while((c=getch()) == KEY_DOWN || c==KEY_UP || c==KEY_LEFT || c==KEY_RIGHT);
x=0;
}
endwin();
return 0;
}
Ich hab es aus einem Script kopiert. Es macht nicht viel, eigentlich gar nix, aber ich wollte hier nicht soviel Quelltext reinstellen und bei diesem Mini-Programm tritt das Problem genauso auf, wie bei den größeren.
ich kompiliere mit :
gcc –o bla bla.c
als Antwort bekomme ich:
/tmp/cclePC35.o: in function ‘main’
/tmp/cclePC35.o (.text+0x19): undefined reference to ’initscr’
/tmp/cclePC35.o (.text+0x20): undefined reference to 'XXXXX'
usw
Es werden alle Funktionen wie z.b. initscr aufgelistet, welche eigentlich in der curses.h stehen. Der Teil: cclePC35 ist bei jedem kompilier Durchlauf anders.
WAS MACH ICH FALSCH? bzw. was bedeutet das und was muß ich tun, damit es funktioniert?
MfG
Minime
Das „Programm“ sieht wie folgt aus:
#include <curses.h>
int main()
{
int c,x=1;
while(x)
{
initscr(); /*curses initialisieren*/
keypad(stdscr,TRUE);
while((c=getch()) == KEY_DOWN || c==KEY_UP || c==KEY_LEFT || c==KEY_RIGHT);
x=0;
}
endwin();
return 0;
}
Ich hab es aus einem Script kopiert. Es macht nicht viel, eigentlich gar nix, aber ich wollte hier nicht soviel Quelltext reinstellen und bei diesem Mini-Programm tritt das Problem genauso auf, wie bei den größeren.
ich kompiliere mit :
gcc –o bla bla.c
als Antwort bekomme ich:
/tmp/cclePC35.o: in function ‘main’
/tmp/cclePC35.o (.text+0x19): undefined reference to ’initscr’
/tmp/cclePC35.o (.text+0x20): undefined reference to 'XXXXX'
usw
Es werden alle Funktionen wie z.b. initscr aufgelistet, welche eigentlich in der curses.h stehen. Der Teil: cclePC35 ist bei jedem kompilier Durchlauf anders.
WAS MACH ICH FALSCH? bzw. was bedeutet das und was muß ich tun, damit es funktioniert?
MfG
Minime
Zuletzt bearbeitet:
Ray
Grand Admiral Special
- Mitglied seit
- 11.11.2001
- Beiträge
- 3.141
- Renomée
- 20
- Standort
- An der Spree
- Mein Laptop
- Kein Notbuch
- Prozessor
- Intel Core2Quad Q9650@3.8, AMD Ryzen 9 under test
- Mainboard
- DFI LANPARTY LT X48-T2R + MIPS DFI LANparty P35/X38/X48 Series Freezer Set Nickel
- Kühlung
- EK-Supreme
- Speicher
- 4 x 2 GB OCZ PC2 8500 C5 Reaper@500
- Grafikprozessor
- XFX 8800 GTS(G92) 512 + EK-FC8800 GT/GTS(g92)
- Display
- TFT HP w2408h, 1920x1200
- SSD
- Samsung 840 Pro 256 GB
- HDD
- 2 x WD Black 1TB
- Optisches Laufwerk
- Samsung SH-D163A, Samsung SH-S183A
- Soundkarte
- Creative X-FI Xtreme Gamer Fatality Pro
- Gehäuse
- Modified Lian Li PC201B
- Netzteil
- Seasonic S12 550W
- Betriebssystem
- Win7U-64
- Webbrowser
- FireFox
- Verschiedenes
- Thermochill PA120.3 Triple Radiator , Liang DDC , 11 years old mainboard, still running!
Das Compilieren funktioniert, der Fehler kommt beim Linken, die angemeckerten Funktionen können nicht gefunden werden.
Das bedeutet, du musst die Bibliothek, welche den übersetzten Code von curses enthält, dazu linken.
Unter cygwin mit dem GNU-Compiler geht das so:
Allg.:
gcc -o exename exename.c -lnamelib
Beispiel:
gcc -o test test.c -llibcurses
Es wird compiliert und das erzeugte test object mit der libcurses zu nem executable namens test gelinkt. Die Option für das Hinzulinken ist -l direkt gefolgt von dem Library-Namen.
Ciao,
Ray
Das bedeutet, du musst die Bibliothek, welche den übersetzten Code von curses enthält, dazu linken.
Unter cygwin mit dem GNU-Compiler geht das so:
Allg.:
gcc -o exename exename.c -lnamelib
Beispiel:
gcc -o test test.c -llibcurses
Es wird compiliert und das erzeugte test object mit der libcurses zu nem executable namens test gelinkt. Die Option für das Hinzulinken ist -l direkt gefolgt von dem Library-Namen.
Ciao,
Ray
Minime
Commander
- Mitglied seit
- 11.11.2001
- Beiträge
- 193
- Renomée
- 0
Hallo und THX erst mal.
Leider funktioniert das auch nicht.
Genauso wie
gcc -o programmname programmname.c -lncurses /*oder auch -lcurses*/
es kommt die Meldung:
/usr/i486-suse-linux/bin/ld: cannot find –llibcurses (oder –lncurses oder -lcurses)
Die curses.h hab ich im Verzeichnis /usr/lib gefunden. Muß ich irgendwo ein verweis auf dieses Verzeichnis setzten, damit das funktioniert?
MfG
Minime
Leider funktioniert das auch nicht.
Genauso wie
gcc -o programmname programmname.c -lncurses /*oder auch -lcurses*/
es kommt die Meldung:
/usr/i486-suse-linux/bin/ld: cannot find –llibcurses (oder –lncurses oder -lcurses)
Die curses.h hab ich im Verzeichnis /usr/lib gefunden. Muß ich irgendwo ein verweis auf dieses Verzeichnis setzten, damit das funktioniert?
MfG
Minime
Ray
Grand Admiral Special
- Mitglied seit
- 11.11.2001
- Beiträge
- 3.141
- Renomée
- 20
- Standort
- An der Spree
- Mein Laptop
- Kein Notbuch
- Prozessor
- Intel Core2Quad Q9650@3.8, AMD Ryzen 9 under test
- Mainboard
- DFI LANPARTY LT X48-T2R + MIPS DFI LANparty P35/X38/X48 Series Freezer Set Nickel
- Kühlung
- EK-Supreme
- Speicher
- 4 x 2 GB OCZ PC2 8500 C5 Reaper@500
- Grafikprozessor
- XFX 8800 GTS(G92) 512 + EK-FC8800 GT/GTS(g92)
- Display
- TFT HP w2408h, 1920x1200
- SSD
- Samsung 840 Pro 256 GB
- HDD
- 2 x WD Black 1TB
- Optisches Laufwerk
- Samsung SH-D163A, Samsung SH-S183A
- Soundkarte
- Creative X-FI Xtreme Gamer Fatality Pro
- Gehäuse
- Modified Lian Li PC201B
- Netzteil
- Seasonic S12 550W
- Betriebssystem
- Win7U-64
- Webbrowser
- FireFox
- Verschiedenes
- Thermochill PA120.3 Triple Radiator , Liang DDC , 11 years old mainboard, still running!
Wenn dein "Setup" bzw. dein Environment (Umgebungsvariablen, Pfade etc.) stimmt, sollte der gcc eigentlich alles finden was er braucht.
Weiterhin muss eine Library nicht zwangsläufig so heissen wie ein scheinbar dazugehöriges Headerfile... Das musst du noch rausbekommen, wie die Lib bei dir nun heisst. Bei linux denk ich müsste die Lib unter \usr\lib\ zu finden sein. Such doch mal nach einer Lib, welche ?curses heisst.
Ich habe kein Linux am Laufen, aber die cygnus-tools unter Win2k. Damit habe ich eine GNU-Umgebung und das Commandline-Feeling von Linux. Ich konnte sofort mit
gcc -o test test.c -llibcurses das Programm erzeugen.
In meinem Fall liegt die LIB direkt unter dem Verzeichnis \lib\ als libncurses.a, das Include-File unter \usr\include.
Wahrscheinlich solltest du dir mal die entspr. HowTo's durchlesen oder in einem Linux-Forum nachfragen.
Ein Buch "C/C++ Programmierung unter Linux" wäre bestimmt auch nicht verkehrt.
Vielleicht findest du in deiner Installation auch Programmierbeispiele mit Make-Files, Batches u.s.w.
Ciao,
Ray
Weiterhin muss eine Library nicht zwangsläufig so heissen wie ein scheinbar dazugehöriges Headerfile... Das musst du noch rausbekommen, wie die Lib bei dir nun heisst. Bei linux denk ich müsste die Lib unter \usr\lib\ zu finden sein. Such doch mal nach einer Lib, welche ?curses heisst.
Ich habe kein Linux am Laufen, aber die cygnus-tools unter Win2k. Damit habe ich eine GNU-Umgebung und das Commandline-Feeling von Linux. Ich konnte sofort mit
gcc -o test test.c -llibcurses das Programm erzeugen.
In meinem Fall liegt die LIB direkt unter dem Verzeichnis \lib\ als libncurses.a, das Include-File unter \usr\include.
Wahrscheinlich solltest du dir mal die entspr. HowTo's durchlesen oder in einem Linux-Forum nachfragen.
Ein Buch "C/C++ Programmierung unter Linux" wäre bestimmt auch nicht verkehrt.
Vielleicht findest du in deiner Installation auch Programmierbeispiele mit Make-Files, Batches u.s.w.
Ciao,
Ray
Minime
Commander
- Mitglied seit
- 11.11.2001
- Beiträge
- 193
- Renomée
- 0
meine liegt im verzeichnis usr/lib/ und heißt, genau wie bei dir, libncurses.a. scheint wohl doch ein problem mit den umgebungsvariablen zu sein. werd mal schauen ob ich ein gutes linux forum finde (dürfte ja nicht zu schwer sein). die cygnus-tools werd ich mir auch mal antun (wenn mein freund wieder aus dem urlaub zurück ist, mit meinen analogen modem macht das bestimmt keinen sinn die packete runterzuladen).
mfg
Minime
mfg
Minime
huraxprax
Lieutnant
Seltsam
Also die Library heißt libncurses.so oder .a, also muß der Linkerbefehl -lncurses heißen, nicht -llibncurses (immer das lib davor weg).
Es kann nur sein daß aus einem unerfindlichen Grunde /usr/lib bei dir nicht im library-Pfad ist, bind den mal manuell ein.
gcc -o test -L /usr/lib -lncurses test.c
cu, huraxprax
Also die Library heißt libncurses.so oder .a, also muß der Linkerbefehl -lncurses heißen, nicht -llibncurses (immer das lib davor weg).
Es kann nur sein daß aus einem unerfindlichen Grunde /usr/lib bei dir nicht im library-Pfad ist, bind den mal manuell ein.
gcc -o test -L /usr/lib -lncurses test.c
cu, huraxprax
Minime
Commander
- Mitglied seit
- 11.11.2001
- Beiträge
- 193
- Renomée
- 0
@huraxprax THX hat geholfen!
hab es mit pfadangabe compiliert und es hat funktioniert. linux hat sich das wohl "gemerkt", denn ich kann jetzt ohne die pfadangabe einfach mit gcc - o test test.c -lncurses compilieren.
thx nochmal an euch zwei
ein nun vorerst glücklicher
Minime
hab es mit pfadangabe compiliert und es hat funktioniert. linux hat sich das wohl "gemerkt", denn ich kann jetzt ohne die pfadangabe einfach mit gcc - o test test.c -lncurses compilieren.
thx nochmal an euch zwei
ein nun vorerst glücklicher
Minime
Ray
Grand Admiral Special
- Mitglied seit
- 11.11.2001
- Beiträge
- 3.141
- Renomée
- 20
- Standort
- An der Spree
- Mein Laptop
- Kein Notbuch
- Prozessor
- Intel Core2Quad Q9650@3.8, AMD Ryzen 9 under test
- Mainboard
- DFI LANPARTY LT X48-T2R + MIPS DFI LANparty P35/X38/X48 Series Freezer Set Nickel
- Kühlung
- EK-Supreme
- Speicher
- 4 x 2 GB OCZ PC2 8500 C5 Reaper@500
- Grafikprozessor
- XFX 8800 GTS(G92) 512 + EK-FC8800 GT/GTS(g92)
- Display
- TFT HP w2408h, 1920x1200
- SSD
- Samsung 840 Pro 256 GB
- HDD
- 2 x WD Black 1TB
- Optisches Laufwerk
- Samsung SH-D163A, Samsung SH-S183A
- Soundkarte
- Creative X-FI Xtreme Gamer Fatality Pro
- Gehäuse
- Modified Lian Li PC201B
- Netzteil
- Seasonic S12 550W
- Betriebssystem
- Win7U-64
- Webbrowser
- FireFox
- Verschiedenes
- Thermochill PA120.3 Triple Radiator , Liang DDC , 11 years old mainboard, still running!
Übrigens, unter cygnus funktionierts mit
gcc -o test test.c -lcurses
sowie
gcc -o test test.c -llibcurses
Ciao,
Ray
gcc -o test test.c -lcurses
sowie
gcc -o test test.c -llibcurses
Ciao,
Ray
Ähnliche Themen
- Antworten
- 10
- Aufrufe
- 9K
- Antworten
- 0
- Aufrufe
- 54K