2

以下の行をコンソールで問題なく使用していますが、makefile で使用すると以下のエラーが発生します。過去 1 時間、さまざまなことを試しましたが、何も役に立ちません。また、makefile のコマンドの前に「@」を使用する必要がありますが、これは通常のことです。どんな助けでも大歓迎です。

コンソールのコマンド

cpio -itv < rootfs.cpio | awk '!/^d/{$8="";print}' | sort -k8 > rootfs.layout.trim

エラー

awk: !/^d/{="";print}
awk:       ^ syntax error

メイクファイル内

log-rootfs:
# copy the layout dump with all the modification needed to sync with stb output
# get the file list from cpio file => remove the lines with directory name => sort the output and store the same in layout file
cpio -itv < $(ROOTFS_CPIO_FILE) | awk '!/^d/{$8="";print}' | sort -k8 > $(ROOTFS_LAYOUT)
@echo $(ROOTFS_LAYOUT) is created
4

1 に答える 1

5

makeという名前の変数/マクロを探しています$8。一般に、makefile でエスケープする必要があり、リテラルをシェルに$渡したい場合は、makefile で使用する必要があります。つまり、次のことを試してください。$$$

rule:
  ... awk '!/^d/{$$8="";print}' ...
于 2013-08-27T13:47:46.283 に答える