Quelle-Datei kann nicht finden die header-Dateien
Ich habe mir diese links gilt : Diese eine
und Diese
und ein paar andere ähnliche.
Keine der Antworten, die hier gegeben sind Arbeitsmethoden arbeiten.
Ich habe zwei source-Dateien a1.c
, a2.c
und zwei header-Dateien a1.h
und a2.h
. Ich möchte die header-Dateien diese Dateien (und a2.c in a1.c da gibt es eine Funktion, die ich brauche, um die Verwendung von a2.c)
Ich habe
#include "a1.h"
#include "a2.h"
in den source-Dateien der a1.c
Ich bin mit GCC auf Ubuntu. und mit dem Befehl gcc a1.h -o a1.out -lm
und das hat nicht funktioniert.
Habe ich versucht mit
gcc -c -I/Home/Documents/ctests/ a1.c -o a1.out
sowie
gcc -c a1.c -I/Home/Documents/ctests/ -o a1.out
Meine Schreibweisen in Ordnung sind, wie gut (es gibt kaum Platz für Fehler gibt es mit einem Buchstaben, und eine Nummer wie das mit dem Namen sowieso).
Auch, alle Dateien sind im gleichen Ordner.
Ich weiß, das mag eine triviale Frage, aber ich bin stecken geblieben auf diese und wäre für jede Hilfe dankbar. Ich bin relativ neu in der Programmierung und komplett neu für Linux-und Unix-soweit mit der Kommandozeile geht.
Vielen Dank!
- Wenn alle Dateien im gleichen Ordner, und starten Sie den GCC aus diesem Ordner, gibt es keine Notwendigkeit, verwenden Sie die option
-I
zu findena1.h
unda2.h
. - Welche Fehlermeldungen bietet die GCC-Problem?
- Bekomme ich die gleiche Fehler die ganze Zeit: No such file or directory
- Hast du
cd
Sie zu dem Ordner, wo Ihre.h
und.c
- Dateien befinden? - Warum sollte ich nicht zählen .c-Dateien in andere .c-Dateien? Die ganze Idee hinter der Erstellung von verschiedenen Modulen ist, dass Sie sollten nicht zu kompilieren, das gesamte Projekt zu jeder Zeit. Wenn Sie nur ändern
a2.c
sollten Sie nur neu kompilierena2.c
- und link-die alten, unverändertena1.o
(die sollten nicht übersetzt werden, weil es nichta2.c
) mit der neuena2.o
wie in stardust_ Antwort. - ja, ich habe cd in den gleichen Ordner. Ich die cd hatte zu diesem Ordner erstellt und die Dateien von dort aus. Also das ist nicht das problem. @modifiablelvalue: ich habe nicht ganz genau verstehen, was Sie sagten. Ich habe die Absicht eine zu machen .aus Datei am Ende. Ich möchte zur Verwendung von Funktionen gespeichert in
a2.c
ima1.c
und Variablen und Makros definiert ina1.h
verwendet werden, die in diesen beiden Funktionen. Aber der compiler nicht erkennen diea1.h
Datei überhaupt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
sagt gcc zum kompilieren der Datei-Objekt (das .o Dateien, die Sie sehen, überall). Verknüpft werden später mit einigen anderen .o-Dateien zu einer ausführbaren Datei.
Also, was Sie tun möchten, ist entweder kompilieren Sie die beiden Dateien separat, und verknüpfen Sie Sie später. wie diese.
Oder einfach nur kompilieren und verknüpfen gleichzeitig.
Und dann läuft dein Programm wie
gcc a1.o a2.o -o myprogram
?gcc -o a1.o a2.o myprogram
ist die gleiche. ist es nicht?a2.o
undmyprogram
zum erstellen einer ausführbarena1.o
. (Zumindest meine gcc-4.7.2 funktioniert)/Home/Documents/ctests/
? Auch die genaue Fehlermeldung von gcc gibt. Fügen Sie ein edit zu deiner Frage, wenn du den Platz brauchsta2.c
wahrscheinlich muss das .h-Dateien zu. Es ist nicht genug, um enthalten es nur ina1.c
#include<a1.h>
in der zweiten Quelldatei. Dumme Fehler.Zusammenstellen und verknüpfen Sie Sie zusammen.
Wenn alle Dateien in einem Verzeichnis, das funktionieren sollte:
Wenn Sie möchten, erstellen Sie separate Objekt-Dateien, dies zu tun:
Dann können Sie dann miteinander verbinden, um erstellen Sie eine Anwendung:
Gcc-Befehl sollte wie folgt sein
und es muss
a1.h
unda2.h
header-Datei in Ihrea1.c
wie dieseWenn Sie anrufen, einige Funktion von
a2.c
in Ihrema1.c
dann bauen Sie Ihr Programm auf diese Weise