2016-07-26 3 views
2

Schreiben meine erste Anwendung finden und es kann nicht die Header-Datei scheinen zu finden (was ich nach den Anweisungen in der Readme installiert ist):Compiler kann nicht im Verzeichnis C Bibliothek Header

#include <stdio.h> 
#include <stdlib.h> 
#include <ftdi.h> 

int main (int argc, char *argv[]) 
{ 
int ret; 
struct ftdi_context = *ftdi; 
struct ftdi_version_info version; 
if ((ftdi = ftdi_new()) == 0) 
{ 
    fprintf(stderr, "ftdi_new failed\n"); 
} 
else { 
    fprintf(stderr, "Success\n"); 
} 
return 0; 
} 

Aber es findet hier:

[email protected] ~/Documents/BitBang $ locate ftdi.h 
/home/ollieb/.local/share/Trash/files/libftdi/libftdi/ftdipp/ftdi.hpp 
/home/ollieb/.local/share/Trash/files/libftdi/libftdi/src/ftdi.h 
/home/ollieb/Applications/libftdi1-1.3/build/doc/html/group__libftdi.html 
/home/ollieb/Applications/libftdi1-1.3/build/doc/man/man3/ftdi.h.3 
/home/ollieb/Applications/libftdi1-1.3/build/doc/man/man3/ftdi.hpp.3 
/home/ollieb/Applications/libftdi1-1.3/ftdipp/ftdi.hpp 
/home/ollieb/Applications/libftdi1-1.3/src/ftdi.h 
/usr/include/libftdi1/ftdi.h 
/usr/include/libftdi1/ftdi.hpp 

Dies ist, was passiert, wenn ich zu kompilieren versuchen, sagt es die Datei nicht gefunden werden kann (wenn ich Beispiele in der Code-Bibliothek Ordner laufen laufen sie fein):

[email protected] ~/Documents/BitBang $ make 
make bitbang 
make[1]: Entering directory '/home/ollieb/Documents/BitBang' 
cc -Wall -g  bitbang.c -o bitbang 
bitbang.c:3:18: fatal error: ftdi.h: No such file or directory 
compilation terminated. 
<builtin>: recipe for target 'bitbang' failed 
make[1]: *** [bitbang] Error 1 
make[1]: Leaving directory '/home/ollieb/Documents/BitBang' 
Makefile:4: recipe for target 'all' failed 
make: *** [all] Error 2 
+0

Was ist die genaue Fehlermeldung? – rubikonx9

+1

Ihre 'ftdi.h' Kopien (* das sind viele *) befinden sich an nicht standardmäßigen Orten, der Compiler sucht nur an einigen Stellen nach Kopfzeilen. Sie müssen den Pfad in Ihrem Compiler-Befehl hinzufügen, wahrscheinlich wird '-I/usr/include/libftdi1' funktionieren. –

Antwort

5

Standardmäßig sucht der Compiler nach den Headerdateien im standardmäßigen INCLUDE-Pfad und nicht nach dem gesamten Dateisystem.

Wenn Sie Ihre Header in einem benutzerdefinierten Pfad haben, müssen Sie den Compiler darüber informieren. Mit gcc und clang können Sie beispielsweise den Schalter -I verwenden, damit der Compiler den Pfad kennt, in dem die Headerdateien vorhanden sind.

Von gcc online manual,

-Idir
Fügen Sie das Verzeichnis dir an der Spitze der Liste der Verzeichnisse für die Header-Dateien durchsucht werden. [...]

+0

Also, wie würde ich das zu meiner Make-Datei hinzufügen? – ollie299792458

+0

Danke @iharob für die Zugabe. :) –

+0

Ja, ich denke, der Compiler ist unter OS X sehr verbreitet. –

Verwandte Themen