linux - 无法调试联编文件。生成文件 :9: *** missing separator. 停止

标签 linux vim makefile

我编写了以下 Makefile:

CC='/buildtools/toolchain/wr-x86/3.0FCScg/bin/i586-wrs-linux-gnu-gcc --sysroot=/buildtools/toolchain/wr-x86/3.0FCScg/sysroot'
IDIR =../../../include
CFLAGS=-I$(IDIR)

LDIR =../../../../../../../../.debug/lib.out/public/
LIBS= -lmylib1 -lmylib2 -lmylib3

myexec: my_code.c
    $(CC) $(CFLAGS) -o myexec my_code.c

它抛出错误:

Makefile:9: *** missing separator. Stop

我看了一个相关的问题here .它说选项卡可能有问题。我仔细检查了代码。我使用的是制表符而不是空格。但是当我跑的时候

cat -e -t -v  Makefile

我得到以下信息,这意味着 $CC 之前没有制表符。

CC='/buildtools/toolchain/wr-x86/3.0FCScg/bin/i586-wrs-linux-gnu-gcc --sysroot=/buildtools/toolchain/wr-x86/3.0FCScg/sysroot'$
IDIR =../../../include$
CFLAGS=-I$(IDIR)$
$
LDIR =../../../../../../../../.debug/lib.out/public/$
LIBS= -lmylib1 -lmylib2 -lmylib3$
$
myexec: my_code.c$
    $(CC) $(CFLAGS) -o myexec my_code.c$

我还检查了我的 .vimrc 文件。我有 set tabstop=4。我尝试删除它,但这反而使情况变得更糟。它开始给我错误:Makefile:9: *** missing separator(你是说 TAB 而不是 8 个空格?)。停止。 这是它的样子:

syntax on
colorscheme desert
set nocompatible
set number
set backspace=indent,eol,start
set autoindent
set ruler
set spell
set title
set et
set mouse=v
set history=100
set tabstop=4

最佳答案

在您的 vim 初始化中有一些东西阻止了对 Makefile 的正确编辑。它似乎是 et,它是 expandtab 设置的缩写,它使每个制表符扩展为适当数量的空格字符。 (感谢 Craig Estey 的确认。)

但是,您可以使用 -u NONE 告诉 vim 不使用您的初始化文件:

vim -u NONE Makefile

有了它,您应该能够在需要的制表符中进行编辑。

或者,您可以将其添加到 .vimrc 的底部:

:autocmd FileType make set noet

这将在您编辑 Makefile 时禁用 expandtab 行为。

关于linux - 无法调试联编文件。生成文件 :9: *** missing separator. 停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38753809/

相关文章:

c++如何使用select查看套接字是否已关闭

linux - Hadoop在两台不同名称的机器上配置多节点集群

vim - 如何在 Vim 中以读/写模式打开文件?

compilation - 使 : $LD_RUN_PATH is ignored

c++ - 需要帮助理解 makefile 模式规则 % : %. o

linux - numactl 和 move_pages 不匹配

java - 给定类的完全限定名称,从命令行下载 jar 的最简单方法

vim - 如何在空文件(vim)中以可视 block 模式(Ctrl + v)选择矩形区域?

vim - 我可以在当前搜索词中制作一个视觉 block 吗?

c - 两个相同的模式规则会发生什么?