C-Anfängerfrage: Linken
nina
- programmiertechnik
hi!
vorab, das ganze spielt sich unter linux ab und da ich bisher nur vc++ nutzte, hab ich absolut keine ahnung, wie mir geschieht. in meinen büchern steht auch nur, wie es mit visual c++ geht... aber ich nutze doch gcc ... :(
habe mir in den kopf gesetzt, dass ich http://ndevilla.free.fr/iniparser/ nutzen möchte in meiner anwendung.
also lud ich mir die src dazu herunter. hab sie entpackt und fertig gemacht... nun würde ich sie also gerne nutzen. was ich habe sind *.h und *.c dateien. müsste vermutlich erstmal .o dateien draus machen, wobei mir dabei schon die ahnung fehlt!
oder geht das mit gcc -c -o iniparser.o iniparser.c?
und selbst wenn ich das dann habe, weiß ich immer noch nicht, wie es (mit kdevelop) gelinkt wird bzw was ich als ldflags verwenden soll.
hab die header und c-dateien ins src verzeichnis meiner anwendung kopiert.->kann also #include "iniparser.h" einbinden. ist ja schonmal etwas, möchte man meinen... aber irgendwas scheint noch zu fehlen, denn sobald ich eine funktion von inparser aufrufe, gehts nicht mehr => undefined reference to ..function_name...(char*) sagt mir kdevelop.
wüsste also gerne folgendes:
-welche dateien brauche ich in welchem verzeichnis
-wie komm ich zu den dateien
-welchen ldflag habe ich zu setzen, damit das gelinkt wird?
vielen dank im falle von hilfe
Hi nina !
Erst mal herzlichen Glückwunsch zu einem funktionierendem gcc. In der Regel gibt es beim Kompilieren des gcc tausende von Fehler die in der Regel aus nicht vorhandenen, in den falschen Verzeichnissen sich befindenden oder mit falscher Version behafteten Datei bestehen.
Hast Du schon ein "hello-world"-Programm geschrieben ? Falls das klappt, klappt es auch mit dem Programm.
gcc -o mein_programmname mein_c_code.c
Gruß
Hans
Hi,
Erst mal herzlichen Glückwunsch zu einem funktionierendem gcc. In der Regel gibt es beim Kompilieren des gcc tausende von Fehler die in der Regel aus nicht vorhandenen, in den falschen Verzeichnissen sich befindenden oder mit falscher Version behafteten Datei bestehen.
Es gibt zu jeder Distri ein funktionierendes Paket, wenn da jemand Probleme hat, den gcc zu lauifen zu kriegen, schafft er es auch nicht, den Rechner einzuschalten.
Hallo
Ich kann dir leider nur sagen, wie du zu den Infos kommst und wie ich das gelernt habe: Schau dir make an.
Kompilieren geht in etwa so:
1. alle Untermodule in der Reihenfolge der Abhängigkeiten kompilieren
2. Hauptprogramm kompilieren
3. Hauptprogramm mit allen Unterprogrammen zusammenlinken
Schritt 2 und 3 kann man z.T. zusammenfassen bzw. den GCC erledigen lassen.
Make ist ein geniales Tool, welches die Abhängigkeiten zwischen den Softwarekomponenten handeln kann. D.h. es sucht nach Sourefiles, die seit dem letzen Kompilieren geändert haben und kompiliert alles neu, was davon abhängt. Dazu brauchst du den dir bekannten GCC und den Linker LD. man gcc und man ld geben dir Auskunft über die Parameter und Optionen. Überflieg die mal und notier alles, was dir wichtig erscheint. Damit kannst du später experimentieren.
Wenn du dir dafür zwei, drei Stunden Zeit nimmst weisst du danach wie der Hase läuft. Weil es bei mir auf diese Art herrvorragend funktioniert kann ich dir leider nichts genauers mehr sagen ;-). Eventuell kann ich dir am Abend noch mein Makefile posten.
Peace
Tom2
Hi Tom2
Make ist ein geniales Tool, welches die Abhängigkeiten zwischen den Softwarekomponenten handeln kann.
ja, sofern ein noch genialerer Mensch das Makefile gemaked, äh, gemacht hat ;-)
Wenn du dir dafür zwei, drei Stunden Zeit nimmst weisst du danach wie der Hase läuft. Weil es bei mir auf diese Art herrvorragend funktioniert kann ich dir leider nichts genauers mehr sagen ;-). Eventuell kann ich dir am Abend noch mein Makefile posten.
Dann aber bitte mit Erläuterungen. Sonst ist das so, wie wenn ich einem Koch-Lehrling ein Bild von meinem selbstgemachten Schweinebraten schicke und "Hmmm, lecker" drunter schreibe ;-)
Gruß
Hans
ja, sofern ein noch genialerer Mensch das Makefile gemaked, äh, gemacht hat ;-)
Das macht KDevelop automatisch ,denn es gibt Tools wie autoconf und automake.
Hi,
-welche dateien brauche ich in welchem verzeichnis
Vollkommen egal, du musst KDevelop nur sagen, wo er was findet ;)
-wie komm ich zu den dateien
Durch Programmieren ;)
-welchen ldflag habe ich zu setzen, damit das gelinkt wird?
Schau in das Makefile von iniparser, da stehen die Flags drinnen. Die musst du dann in deinen Projektoptionen -> Einstellungen für Configure eingeben. Anschliessend ein "automake und Konsorten ausführen", dann "Configure" und abschliessend "Datei kompilieren". Diese Befehle findest du unter "Erstellen"