2013-05-07 47 views
1

我得到這個錯誤:雖然我在第24行***缺少分隔符。停止。製作文件

Line24與標籤改變了所有的空格字符

make:24: *** missing separator. Stop. 

:arm_v5t_le-GCC $ FILES $包括$ LIBS -o $ TARGET

下面是代碼:

#DM_serial2_make 

export PATH="$PATH:/opt/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/bin:/opt/mv_pro_5.0/montavista/pro/bin:/opt/mv_pro_5.0/montavista/common/bin" 
TARGET="/home/cilem/Desktop/06.05.2012/DM_serial2" 

INCLUDES=" -I /home/cilem/Desktop/06.05.2012/libxml2 \ 
     -I /home/cilem/Desktop/06.05.2012/gstreamer-0.10 \ 
       -I /home/cilem/Desktop/06.05.2012/gstreamer-0.10/gst/interfaces \ 
       -I /home/cilem/Desktop/06.05.2012/glib-2.0 \ 
       -I /home/cilem/Desktop/06.05.2012/glib-2.0/include" 

LIBS=" -L /home/cilem/Desktop/06.05.2012/lib/ -l:libgstreamer-0.10.so.0 \ 
    -L /home/cilem/Desktop/06.05.2012/lib/ -l:libgstinterfaces-0.10.so.0 \ 
    -L /home/cilem/Desktop/06.05.2012/lib/ -l:libgobject-2.0.so.0 \ 
    -L /home/cilem/Desktop/06.05.2012/lib/ -l:libgmodule-2.0.so.0 \ 
    -L /home/cilem/Desktop/06.05.2012/lib/ -l:libxml2.so.2 \ 
    -L /home/cilem/Desktop/06.05.2012/lib/ -l:libgthread-2.0.so.0 \ 
    -L /home/cilem/Desktop/06.05.2012/lib/ -l:libglib-2.0.so.0" 


FILES="DM_serial2.c" 

arm_v5t_le-gcc $FILES $INCLUDES $LIBS -o $TARGET 

回答

2

看起來像一個shell腳本。 Shell腳本不是makefile,反之亦然。你需要找到一個關於make的好教程,或者閱讀GNU make手冊。

例如,您不應該在變量值中引用任何引號。

其次,make中的變量擴展需要變量被parens或花括號包圍:$(FILES)${FILES}

第三,正如piokuc所說,該行不是有效的制定規則。的美容規則有以下形式:

<target> : <dependencies...> 
     <commands...> 

其中commands...的縮進必須是製表符。這個規則說:「你可以通過運行commands...來創建target,只要它比dependencies...中的任何一個更老。」 targetdependencies必須(通常)是文件,所以你絕對不想在該列表中使用$(INCLUDES)$(LIBS),因爲這些是編譯器標誌。

你可能想是這樣的,儘管它可以改進:

$(TARGET): $(FILES) 
     arm_v5t_le-gcc $(FILES) $(INCLUDES) $(LIBS) -o $(TARGET) 

你這裏還有其他奇怪的事情。您不需要使用-L標誌反覆提供相同的目錄。一次就夠了。我也不熟悉-l:libfoo.a構造;通常它只是-lfoo

1

我認爲最後一行應與東西等來代替:

$TARGET: $FILES $INCLUDES $LIBS 
    arm_v5t_le-gcc $FILES $INCLUDES $LIBS -o $TARGET 

上面的行(以arm_v5t_le-gcc開頭的行)應該以製表符開始,而不是空格。