【问题标题】:Makefile error:127生成文件错误:127
【发布时间】:2014-11-02 14:41:10
【问题描述】:

我用 Makefile 编译了源代码,我得到了 Makefile 错误:

/bin/sh: line 8:  : command not found
make: *** [lib_build] Error 127

我的 lib_build 目标如下:

lib_build:
    @echo "--------------------------------------------------------------------";
    @echo "VZW Compiling DM Agent 3rd party and native Libraries..." ;
    @echo "--------------------------------------------------------------------";
    mkdir -p $(VZW_LIB_DIR) ; \
    mkdir -p $(VZW_BIN_DIR) ; \
    mkdir -p $(VZW_SCR_DIR) ; \
    mkdir -p $(VZW_CFG_DIR) ; \
    mkdir -p $(VZW_OBJ_DIR) ; \
    mkdir -p $(VZW_LOG_DIR) ; \
    cd $(VZW_BASE_DIR)/lib/ ; \
    make all ; \
    cd $(VZW_SYNCML_DIR)/src/bld/linux ; \ 
    make all;
    cp -r $(VZW_SYNCML_DIR)/bin/linux/libsml.so $(VZW_LIB_DIR) ;
    cp -r $(VZW_SYNCML_DIR)/bin/linux/libxpt.so $(VZW_LIB_DIR) ;
    cp -r $(VZW_BASE_DIR)/3rd_party/iksemel-1.4/src/.libs/* $(VZW_LIB_DIR) ;

它工作正常,然后我尝试修改上述源代码中的某些行,然后恢复所有内容。然后出了点问题,我得到了错误。我无法理解出了什么问题。

这里还有一件事要补充。有什么方法可以知道在 Makefile 的哪一行发生了这种问题。如果没有办法,那么很难发现这类问题。

【问题讨论】:

  • above source code 是什么意思?
  • 你确定缩进没问题吗?在 makefile 的情况下,tabspace 之间存在显着差异。
  • @Sathish 以上源代码表示生成文件代码。
  • @Saurav 我检查了 Makefile 中的缩进一百次。(制表符和空格)
  • Make 输出它执行的每个命令(如果没有被@ 符号抑制)。它打印的最后一条命令是什么?可以在shell中手动执行吗?

标签: automake makefile


【解决方案1】:

我建议重组命令。编写规则时,它会忽略所有错误,因为这就是 shell 的工作方式。至少在这个 shell 命令序列前加上 set -e

【讨论】:

  • 你的意思是我可以使用这个命令找到问题所在的确切行吗?
  • @Sarwan set -e 导致 bash 在第一个错误时停止执行进一步的命令。
【解决方案2】:

为了查找是否存在任何语法错误,我做了很多调整,我找到了解决方案,即 Makefile 中的一行后有一个空格。在“/”之后

cd $(VZW_SYNCML_DIR)/src/bld/linux ; \ 

这很难发现,因为空间不可见。

【讨论】:

    猜你喜欢
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 2023-03-26
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多