2016-07-26 158 views
2

用C寫我的第一個應用程序,它似乎無法找到頭文件(我安裝以下自述文件中的說明):編譯器找不到安裝庫頭

#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; 
} 

但它發現在這裏:

[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 

這是當我嘗試編譯發生了什麼,它說,該文件無法找到(當我運行的代碼庫文件夾的例子,他們運行正常):

[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

有什麼確切的錯誤信息? – rubikonx9

+1

您的'ftdi.h'副本(很多*爲*)位於非標準位置,編譯器僅在某些位置搜索標頭。您需要在編譯器命令中添加路徑,很可能'-I/usr/include/libftdi1'將起作用。 –

回答

5

默認情況下,編譯器搜索默認INCLUDE路徑中的頭文件,而不是整個文件系統。

如果你有一個自定義路徑你的頭,你需要告訴編譯器有關。例如,使用gccclang,可以使用-I開關讓編譯器知道頭文件存在的路徑。

gcc online manual

-Idir
添加目錄dir到的目錄列表的頭部要搜索的頭文件。 [...]

+0

那麼我如何將它添加到我的make文件中? – ollie299792458

+0

謝謝@iharob的補充。 :) –

+0

是的,我認爲clang編譯器在OS X上很常見。 –