我编写了以下 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/