2014-11-22 862 views
4

試圖編譯C程序,每次我按照建議運行makegmake時出現此錯誤。致命錯誤:找不到'endian.h'文件

$ make 
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C src all 
gcc -g -W -Wall -O3 -D_FILE_OFFSET_BITS=64 -D_REVISION=0 -Iinclude -c -o osdep/radiotap/radiotap.o osdep/radiotap/radiotap.c 
In file included from osdep/radiotap/radiotap.c:17: 
osdep/radiotap/platform.h:6:10: fatal error: 'endian.h' file not found 
#include <endian.h> 
     ^
1 error generated. 
make[1]: *** [osdep/radiotap/radiotap.o] Error 1 
make: *** [all] Error 2 


$ gmake 
gmake -C src all 
gmake[1]: Entering directory '/Users/silent/Desktop/aircr-1.2-rc1/src' 
gcc -g -W -Wall -O3 -D_FILE_OFFSET_BITS=64 -D_REVISION=0 -Iinclude -c -o osdep/radiotap/radiotap.o osdep/radiotap/radiotap.c 
In file included from osdep/radiotap/radiotap.c:17: 
osdep/radiotap/platform.h:6:10: fatal error: 'endian.h' file not found 
#include <endian.h> 
     ^
1 error generated. 
<builtin>: recipe for target 'osdep/radiotap/radiotap.o' failed 
gmake[1]: *** [osdep/radiotap/radiotap.o] Error 1 
gmake[1]: Leaving directory '/Users/silent/Desktop/aircr-1.2-rc1/src' 
Makefile:25: recipe for target 'all' failed 
gmake: *** [all] Error 2 

根據網上建議檢查文件在此位置~/usr/include/machine,但不說,如果發現或不能做什麼某些形式!沒有別的是有幫助的。然後,我發現這個http://www.opensource.apple.com/source/CarbonHeaders/CarbonHeaders-18.1/Endian.h

silent:~/usr/include/machine 
$ ls 
_limits.h  _types.h  fasttrap_isa.h profile.h  vmparam.h 
_mcontext.h byte_order.h limits.h  signal.h 
_param.h  `endian.h`  param.h  types.h 

如你我收到錯誤的文件已經存在!任何幫助,將不勝感激。謝謝。

!PS:我是新手,我不知道什麼是上面談到這個鏈接:(

+2

你試圖複製並粘貼endian.h到/ usr/include目錄? 這是這裏的答案http://stackoverflow.com/questions/20813028/endian-h-not-found-on-mac-osx – 2014-11-22 04:21:20

+0

這是我到那個鏈接,但我沒有嘗試過,現在會做並看看會發生什麼。 – user93097373 2014-11-22 06:40:35

+0

@ user3097840,我得到更多錯誤鏈接丟失,所以我把它放回去,錯誤解決與重新啓動。現在,它獲得了'架構x86_64的未定義符號:' – user93097373 2014-11-22 09:18:44

回答

1

你必須告訴C編譯器在那裏可以找到這個文件:

export CFLAGS="$CFLAGS -I~/usr/include/machine" 然後運行make

另外,您可以編輯該文件Makefile以在必要時添加-I~/usr/include/machine一部分。

1

在OSX和iOS,您可以包括endian.h日是方式:

#include <machine/endian.h> 

但請注意,這將在Android或Linux上失敗,因爲他們預計#include <endian.h>

還可以包括SYS/types.h中,其中將包括endian.h都在iOS/OSX和Android/Linux的權利:

#include <sys/types.h> 
相關問題