【问题标题】:makefile missing separator in Mac OS XMac OS X中的makefile缺少分隔符
【发布时间】:2014-10-16 12:03:46
【问题描述】:

我有一个在 OS X 中给出以下错误的 makefile,如果有人知道为什么会出现此错误,我将非常感激: ./../../../..//Source//templates/gcc/Makefile.posix:15: *** 缺少分隔符。停止。 这是生成文件:

GNU_INSTALL_ROOT := /usr/local/gcc-arm-none-eabi-4_8-2014q3
GNU_VERSION := 4.8.3
GNU_PREFIX := arm-none-eabi
GDB_PORT_NUMBER := 9992

FLASH_START_ADDR = $(shell $(OBJDUMP) -h    $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).out -j .text | grep .text | awk '{print $$4}')

JLINK_OPTS = -device nrf51822 -if swd -speed 4000
JLINK_GDB_OPTS = -noir
JLINK = JLinkExe $(JLINK_OPTS)
JLINKD_GDB = JLinkGDBServer $(JLINK_GDB_OPTS)


flash-jlink: flash.jlink
    $(JLINK) flash.jlink

flash.jlink:
    printf "loadbin $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).bin $(FLASH_START_ADDR)\nr\ng\nexit\n" > flash.jlink

erase-all: erase-all.jlink
    $(JLINK) erase-all.jlink

erase-all.jlink:
    # Write to NVMC to enable erase, do erase all, wait for completion. reset
    printf "w4 4001e504 2\nw4 4001e50c 1\nsleep 100\nr\nexit\n" > erase-all.jlink

run-debug:
    $(JLINKD_GDB) $(JLINK_OPTS) $(JLINK_GDB_OPTS) -port $(GDB_PORT_NUMBER)

.PHONY:  flash-jlink flash.jlink erase-all erase-all.jlink run-debug

【问题讨论】:

  • “缺少分隔符”几乎总是意味着您的命令行不以制表符开头。确保每个命令行中的第一个字符是制表符,而不是空格。
  • 有多种可能性。绝对@JohnBode 的回答很有可能。如果您实际上粘贴了确切的错误消息而不是在标题中解释它,那么我们可能会明确地告诉您,因为该消息将包含一个行号......没有这个我们只是在猜测。
  • 真的,抱歉:../../../../..//Source//templates/gcc/Makefile.posix:15: *** 缺少分隔符。停止。
  • 约翰的评论是相关的。您是否确认第 15 行确实以制表符而不是空格开头?
  • 确实,第 15 行以一个制表符开头.. 好奇怪

标签: c macos makefile


【解决方案1】:

括号编辑器中的 TAB 字符已替换为 4 个空格 (sp sp sp sp)。更改为其他编辑器(TextMate)解决了问题

【讨论】:

    【解决方案2】:

    我在使用 VIM(在 MacOS 上)时发现在解析 Makefile 时出现了“expandtab”问题。如果设置,它会将您的选项卡变成 4 个空格。 (所以我把它注释掉了)

    " 将制表符展开为空格

    "设置展开选项卡

    【讨论】:

      猜你喜欢
      • 2012-03-23
      • 1970-01-01
      • 2011-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-13
      相关资源
      最近更新 更多