1

私はこのエラーが発生しています:

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

24行目のタブですべてのスペース文字を変更しましたが。

Line24: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

シェルスクリプトのようです。シェル スクリプトはメイクファイルではなく、その逆も同様です。make に関する優れたチュートリアルを見つけるか、GNU make マニュアルを読む必要があります。

たとえば、変数値に引用符を使用しないでください。

第 2 に、make での変数展開では、変数を括弧または中括弧で囲む必要があります:$(FILES)または${FILES}.

第三に、piokuc が言うように、その行は有効な make ルールではありません。make ルールの形式は次のとおりです。

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

のインデントはcommands...タブ文字でなければなりません。このルールは、「実行することtargetで、いつでもビルドできる」ことを示しています。andは(通常)ファイルでなければならないため、これらはコンパイラフラグであるため、そのリストでorを使用したくないことは間違いありません。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

最後の行は次のように置き換える必要があると思います。

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

上記の行 (arm_v5t_le-gcc で始まる行) は、スペースではなくタブで開始する必要があります。

于 2013-05-07T13:22:50.380 に答える