2017-03-16 161 views
0
### Compiler arguments 
#CC = gcc 
gcc -I/usr/lib/jvm/jdk1.8.0_121/include/jni.h 
CFLAGSNO = $(EXTRA_CC_ARGS) -Wall -g -I/usr/local/include -DCLASSNAME=$(CLASSNAME) 
CFLAGS += $(CFLAGSNO) 

,當我試圖進入的makefile這個我得到這個錯誤:如何包括makefile文件頭目錄

make TARGET=cooja clean ../../../platform/cooja/Makefile.cooja:74: *** missing separator (did you mean TAB instead of 8 spaces?). Stop. Process returned error code 2

我有這行的問題: 的gcc -I/usr/lib目錄/ JVM/jdk1.8.0_121 /包括/ jni.h

按照從其他職位的指示,我跟着這些指示:

修復問題

您可以通過將Spaces更改爲實際製表符來解決此問題。我用vim修復我的文件。只需打開它:

$ vim makefile 

然後運行中這個命令:

:%s/^[ ]\+/^I/ 

這將取代所有以1個或更多的空間與實際的標籤開頭的行。

但仍然無法正常工作 我該如何將其包含到makefile中?

+0

它是你完整的'Makefile'嗎?你是如何在'Makefile'中嘗試使用'gcc'的? – uzsolt

回答

0

您的編輯器是否使用空格而不是製表符?
GNU Make在其Makefiles中需要真正的製表符。

0

您可以使用-I標誌鏈接標題。例如-Icurl /,它將包含該目錄中的所有標題。

採樣方式:

INCLUDE_DIR = app/curl/include 
CFLAGS=-c -Wall -I$(INCLUDE_DIR) 

回答你的問題:

錯誤:Makefile文件:8:(?你的意思是TAB,而不是 8個空格)***遺漏分隔符。停止。

This is the classical problem. Makefile accepts only tab indentation with 4 space not 8. Change the setting of editor what you use to set the tab width to 4, this will resolve your problem.

+0

註釋「Makefile只接受帶有4個空格的製表符縮進not 8.更改編輯器的設置,將製表符寬度設置爲4,這將解決您的問題」是不正確的。 Make要求將配方命令作爲行上的第一個字符與實際的製表符進行縮進,而不是使用空格字符。編輯器顯示TAB字符時顯示的_width_完全不相關:它可以顯示1個空格,2個空格,4個空格,5個空格,8個空格,9個空格......重要的是第一個字符是TAB 。 – MadScientist

+0

@MadScientist:我還有問題 – NTP