运行时出现以下错误make:
Makefile:168: *** missing separator. Stop.
Run Code Online (Sandbox Code Playgroud)
是什么造成的?
我需要有条件地执行一些make规则,只要安装的Python大于某个版本(比如2.5).
我以为我可以做一些像执行:
python -c 'import sys; print int(sys.version_info >= (2,5))'
Run Code Online (Sandbox Code Playgroud)
然后在ifeqmake语句中使用输出(如果正常则为"1",否则为"0").
在一个简单的bash shell脚本中,它只是:
MY_VAR=`python -c 'import sys; print int(sys.version_info >= (2,5))'`
Run Code Online (Sandbox Code Playgroud)
但这在Makefile中不起作用.
有什么建议?我可以使用任何其他合理的解决方法来实现这一目标.
我在c上创建一个项目,当我创建我的Makefile并尝试运行它时,它给了我这个错误:
Makefile:1: *** missing separator. Stop.
Run Code Online (Sandbox Code Playgroud)
我的makefile代码是:
CC=gcc
OBJ=./objetos
INC=./include
FON=./aqsFonte
BIB=./bibliotecas
OPBIB=-lBiblioteca
ProjetoFinal: libFinal.a
$(CP) $(FON)/ProjetoFinal.c -I$(INC) -L$(BIB) $(OPBIB) -o ProjetoFinal
Bibliotecas.a: Caminho.o Libs_Defines.o Matrizes.o Proc_Imagens.o Vetores.o
ar -q $(BIB)/libFinal.a Caminho.o ibs_Defines.o Matrizes.o Proc_Imagens.o Vetores.o
Caminho.o:
$(CP) $(FON)/Caminho.c -o Caminho.o
Libs_Defines.o :
$(CP) $(FON)/Libs_Defines.c -o Libs_Defines.o
Matrizes.o:
$(CP) $(FON)/Matrizes.c -o Matrizes.o
Proc_Imagens.o:
$(CP) $(FON)/Proc_Imagens.c -o Proc_Imagens.o
Vetores.o:
$(CP) $(FON)/Vetores.c -o Vetores.o
Run Code Online (Sandbox Code Playgroud)
此外,我猜它都是正确的标签.
HEADERS = schedule.h
default: papcmp
program.o: schedule.c $(HEADERS)
gcc -g -lnuma -lm -pthread schedule.c -lutil -lz -o schedule.o
program: schedule.o
gcc schedule.o -o papcmp
clean:
-rm -f schedule.o
-rm -f papcmp
-rm -f *.log dump.gz
Run Code Online (Sandbox Code Playgroud)
这是我第一次尝试创建一个make文件.看起来好像有错误.你能帮帮我吗?bold根据输出,输入的行有错误.
有没有办法在Makefile中编写"标准"注释,以便以后将它们提供给类似Doxygen的程序,以便输出一个好的(HTML或man)文档?我想在某个地方清楚地概述我的主要目标,但没有什么太花哨的.
我无法理解我之前在stackoverflow上询问的上一个问题的答案:
答案尤其来自user:las3rjock,他建议创建一个"makefile"并运行makefile来自动编译R(Sweave)中的.Rnw然后再编译LaTeX.我不知道makefile是什么,或者如何在Mac OS X上的终端(?)中使用它.我的网络搜索返回了我的知识水平以上的东西.我想我需要一些手来创建并运行一个makefile.
任何人都可以给出关于如何创建一个makefile来运行Sweave/LaTeX的"虚拟"指令,或者更重要的是,在上一个问题中使用las3rjock的答案吗? 谢谢!
正如标题所述,我正在寻找一种方法来编译我的具有某些依赖项的 PIN 工具。例如,如果我#include "somefile.h"在我的 PIN 工具中生成一些目标文件g++ -c somefile.cpp,我如何链接我的目标文件以使用我的 PIN 工具进行编译,以便我可以在我的 PIN 工具中使用它的功能?
使用 UBUNTU 20.4 和编译器版本 gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0,
我对 vscode 很陌生-我用 C 构建了一个程序,在其主要参数中获取两个字符串(作为文件名)
所以我构建了这个 Makefile 以节省自己检查代码编译和运行的时间,并这样写:
all: //tried with and without "all:" line//
gcc main.c
./a.out ex1.bin ex2.bin
rm -i a.out
Run Code Online (Sandbox Code Playgroud)
由于某种原因,在执行 make 之后,我在终端中被拒绝并得到以下信息:
Makefile:2: *** missing separator. Stop.
我做错了什么以及如何解决它?
感谢帮助者
我放
@echo "============= $(TOOLPREFIX) ================="
Run Code Online (Sandbox Code Playgroud)
在许多操作系统课程使用的xv6 Makefile的第34行中,希望打印出变量TOOLPREFIX的值。但我总是出错
Makefile:37: *** missing separator. Stop.
Run Code Online (Sandbox Code Playgroud)
该行位于任何目标之前。我尝试了所有能做的事情,比如在命令开头添加 Tab、将命令移动到 Makefile 中的任何位置,或者删除 echo 之前的符号 @,但无论如何我总是收到错误。但如果我注释掉这个命令,就没有错误了。那么,我应该如何正确打印出这个Makefile中的变量呢?
顺便说一句,如果我在命令开头添加 Tab,我得到的错误是“Makefile:37: *** 配方在第一个目标之前开始。停止。” 但如果我将 @echo 命令移至 Makefile 的底部,则会显示“Makefile:287: *** 缺少分隔符。停止。” 又出来了。
环境是Windows Subsystem for Linux,安装了ubuntu 20.04。
我正在尝试编写一个简单的 makefile,但缺少分隔符:
CC = g++
CFLAGS = -Wall -g
all: compile
compile: array.cpp
$(CC) $(CFLAGS) array.cpp
run: ./result.out
Run Code Online (Sandbox Code Playgroud) 这是我的 Makefile,我收到错误消息“***missing separator.stop” 我正在尝试编译一个库,但由于某种原因我收到此错误消息。其他类似的 SO 问题表明这是一个制表问题,但我无法解决。
CC=g++
RANLIB=ranlib
LIBSRC=osm.c
LIBOBJ=$(LIBSRC:.c=.o)
INCS=-I.
CFLAGS = -Wall -g $(INCS)
LOADLIBES = -L./
OSMLIB = libosm.a
TARGETS = $(OSMLIB)
TAR=tar
TARFLAGS=-cvf
TARNAME=ex1.tar
TARSRCS=$(LIBSRC) Makefile README
all: $(TARGETS)
$(TARGETS): $(LIBOBJ)
$(AR) $(ARFLAGS) $@ $^ //this line fails with the warning
$(RANLIB) $@
clean:
$(RM) $(TARGETS) $(OSMLIB) $(OBJ) $(LIBOBJ) *~ *core
depend:
makedepend -- $(CFLAGS) -- $(SRC) $(LIBSRC)
tar:
$(TAR) $(TARFLAGS) $(TARNAME) $(TARSRCS)
Run Code Online (Sandbox Code Playgroud)