C-File ohne Makefile kompilieren?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
hawkeye78
Beiträge: 430
Registriert: 10.09.2004 17:02:01
Wohnort: castrop-rauxel

C-File ohne Makefile kompilieren?

Beitrag von hawkeye78 » 10.03.2007 22:50:53

Hallo,

ich bin mir nicht ganz sicher ob ich hier am richtigen Ort mit meiner Frage bin. Falls nicht möchte ich an dieser Stelle schon einmal einen Moderator dazu einladen meinen Beitrag an die richtige Stelle zu verschieben :)
Um nun auf mein Problem zu sprechen zu kommen, ich würde ganze gerne unter der zuhilfe nahme der Bindings für pilot-link ein Programm in Java schreiben. Nun liefert aber leider ein Make in dem Verzeichnis, die Meldung:

Code: Alles auswählen

make: *** Keine Regel vorhanden, um das Target »../../config.status«,
  benötigt von »Makefile«, zu erstellen.  Schluss.
Darum bin ich nun auf die Idee gekommen die C-Datei mit der Header-Datei selbst zu kompilieren (es geht auf den ersten Blick nur um diese beiden Dateien). Nun stehe ich aber vor dem Problem das ich nur sehr sehr geringe Erfahrung mit dem gcc habe, und darum auch keine Idee habe wie ich das nun selbst kompilieren kann.
Ich wäre daher über einen entsprechenden Hinweis sehr dankbar.
Viele Grüsse
Dan
I love deadlines. I like the whooshing sound they make as they fly by - Douglas Adams

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 10.03.2007 22:58:51

Die Datei config.status fehlt bei dir wahrscheinlich deshalb, weil du nicht im Hauptverzeichnis das "./configure" Script aufgerufen hast.

Eine C-Datei kompilierst du und linkst du im einfachsten Fall durch den Aufruf

Code: Alles auswählen

gcc -o PROGRAMMNAME  DATEI.c
möglicherweise benötigst du noch zusätzliche Include-Verzeichnisse, die kannst du mit der "-I" Option angeben
zusätzliche Libraryverzeichnisse kannst du mit der "-L" Option angeben und zusätzliche Libraries mit der "-l" Option

z.B

Code: Alles auswählen

gcc -o PROGRAMMNAME DATEI.c -I../include -L../lib -lLIBRARYNAME
weiter Infor findest du über "man gcc"

Gruß
gms

hawkeye78
Beiträge: 430
Registriert: 10.09.2004 17:02:01
Wohnort: castrop-rauxel

Beitrag von hawkeye78 » 10.03.2007 23:31:51

Hallo gms,

nein ich hatte direkt im Verzeichnis ein make aufgerufen und dann die oben beschriebene Fehlermeldung bekommen. Wenn ich ein ./configure machen führt dieses im moment zu der Fehlermeldung:

Code: Alles auswählen

checking for readline... not found
configure: error: Development headers for readline were not found. Please correct.
Ansonsten habe ich auch versucht die Datei per hand zu kompilieren was wiederrum zu dieser Fehlermeldung führt. Mit anderen Worten es bleibt für mich morgen noch genügend zu tun, um auszuprobieren wie ich das nun doch kompiliert bekomme :).
Viele Grüsse
Dan
I love deadlines. I like the whooshing sound they make as they fly by - Douglas Adams

Benutzeravatar
catdog2
Beiträge: 5352
Registriert: 24.06.2006 16:50:03
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von catdog2 » 10.03.2007 23:49:38

Ihm fehtl wohl das Paket libreadline-dev
Unix is user-friendly; it's just picky about who its friends are.

hawkeye78
Beiträge: 430
Registriert: 10.09.2004 17:02:01
Wohnort: castrop-rauxel

Beitrag von hawkeye78 » 11.03.2007 00:08:17

mh, also das Problem scheint wohl etwas umfangreicher zu sein (oder ich bin einfach zu dämlich...), auf jeden Fall läuft jetzt Konfigurieren bzw. Kompilieren ohne Probleme durch, aber er erzeugt immer noch nicht die Libery. Ich vermute im moment das liegt daran das ein ./configure die Anwendung selbst konfiguriert während ich für die Bindings, noch einmal ein make im eigentlichen Verzeichnis der Binding ausführen muß. Führt dieses dann zu dieser [url=http://nopaste.debianforum.de/5360]Meldung[/url. Ich habe zwar im moment die Vermutung das liegt daran das der Pfad zu meiner Java-SDK nicht richtig gesetzt ist. Aber so langsam vergeht mir heute nacht die Lust daran weiter herum zu probieren. :)
Gruß
Dan

Edit:
Ich habe mich gerade mal ein bißchen in die Materie eingelesen (Stichwort: System.loadLibrary), und offenbar ist es nicht einmal nötig aus der C und Header-Datei lauffähigen Code zu produzieren. Stattdessen muß man nur die Header-Datei auf der konsole mit dem befehl javah "kompilieren". Wie das genau allerdings funktioniert erschließlich mir noch nicht so ganz.
Trotzdem möchte ich an dieser Stelle schon einmal allen Helfer für ihre schnelle und kompetente Hilfe danken.
I love deadlines. I like the whooshing sound they make as they fly by - Douglas Adams

Benutzeravatar
Teddybear
Beiträge: 3163
Registriert: 07.05.2005 13:52:55
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Altomünster
Kontaktdaten:

Beitrag von Teddybear » 11.03.2007 09:34:27

Moin Hawkeye

Ich hab mir das Zeugs mal angesehen... War wohl jetzt die Version 0.12.2
Also erstmal das Configure-Script im Stammverzeichnis des Source durchlaufen lassen.
(Wenn du libreadline-dev nicht installieren magst --without-readline als Option mit geben)
dann erstmal ein make, um die abhängigkeiten zu haben
dann in den Ordner ?????/bindings/Java/ wechseln
ein kleines make und schon fangen g++ und javac fleissig an zu bauen.

PS: gebaut wird die lib mit g++
Versuchungen sollte man nachgeben. Wer weiß, ob sie wiederkommen!
Oscar Wilde

Mod-Voice / My Voice

Antworten