1

我收到此错误:

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

虽然我在第 24 行用制表符更改了所有空格字符。

第 24 行:arm_v5t_le-gcc $FILES $INCLUDES $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
4

2 回答 2

2

这看起来像一个shell脚本。Shell 脚本不是 makefile,反之亦然。你需要找到一个很好的 make 教程,或者阅读 GNU make 手册。

例如,您的变量值中不应有任何引用。

其次,make 中的变量扩展要求变量用括号或花括号括起来:$(FILES)${FILES}.

第三,正如 piokuc 所说,该行不是有效的 make 规则。make 规则具有以下形式:

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

其中 的缩进commands...必须是 TAB 字符。这条规则说“你可以target在任何时候dependencies...通过运行来构建它commands...”。和必须(通常)是文件targetdependencies因此您绝对不想使用$(INCLUDES)$(LIBS)在该列表中,因为它们是编译器标志。

你可能想要这样的东西,虽然它可以改进:

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

你这里还有其他奇怪的东西。您不需要一遍又一遍地提供与-L标志相同的目录。一次就够了。我也不熟悉这个-l:libfoo.a结构;通常只是-lfoo.

于 2013-05-07T13:42:16.273 回答
1

I think the last line should be replaced with something like:

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

The above line (the one starting with arm_v5t_le-gcc) should start with a tab, not spaces.

于 2013-05-07T13:22:50.380 回答