Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C linux中的Makefile错误_Linux_Makefile - Fatal编程技术网

C linux中的Makefile错误

C linux中的Makefile错误,linux,makefile,Linux,Makefile,在linux中生成makefile时出错。这是我的密码: CC=gcc CFLAGS=-Wall-m32-g-fno堆栈保护器-z execstack-O0 SHELL_SOURCES=SHELL.c 外壳 .假冒:所有target1都是干净的 全部:target1 target1:$(壳牌) $(SHELL):$(SHELL\u来源) $(CC)$(CFLAGS)$^-o$@ 清洁: rm-rf$(壳牌) 我得到的错误是: gcc -Wall -m32 -g -fno-stack-prote

在linux中生成makefile时出错。这是我的密码:

CC=gcc
CFLAGS=-Wall-m32-g-fno堆栈保护器-z execstack-O0
SHELL_SOURCES=SHELL.c
外壳
.假冒:所有target1都是干净的
全部:target1
target1:$(壳牌)
$(SHELL):$(SHELL\u来源)
$(CC)$(CFLAGS)$^-o$@
清洁:
rm-rf$(壳牌)
我得到的错误是:

gcc -Wall -m32 -g -fno-stack-protector -z execstack -O0 Shell.c -o Shell
make: Shell: Command not found
Makefile:16: recipe for target 'Shell' failed
make: *** [Shell] Error 127
花更多的时间阅读

应删除变量赋值(例如代码)周围的空格

 CC= gcc
请注意,制表符在
Makefile
-s中很重要(在中,用于其操作行)。使用一些意识到这一点的编辑器(例如,
emacs
有一个模式用于)。另请参见示例(但规则操作实际上应该以制表符开头)。值得注意的是,在
$(CC)$(CFLAGS)$^-o$@
前面需要一个选项卡,在
rm
前面需要另一个选项卡

还可以考虑使用
-x
调试
Makefile
,或者至少使用
make--trace

但是,主要的错误确实是使用了。使用to
make
时要小心。实际上,我有一个习惯,就是在我的
make
变量名前面加上一个通用前缀,这样你就可以定义你的变量,比如
JOJOIGA_SOURCES=$(通配符*.c)
jojojoiga_SHELL=SHELL
等等……

需要更多的时间来阅读

应删除变量赋值(例如代码)周围的空格

 CC= gcc
请注意,制表符在
Makefile
-s中很重要(在中,用于其操作行)。使用一些意识到这一点的编辑器(例如,
emacs
有一个模式用于)。另请参见示例(但规则操作实际上应该以制表符开头)。值得注意的是,在
$(CC)$(CFLAGS)$^-o$@
前面需要一个选项卡,在
rm
前面需要另一个选项卡

还可以考虑使用
-x
调试
Makefile
,或者至少使用
make--trace


但是,主要的错误确实是使用了。使用to
make
时要小心。实际上,我有一个习惯,就是在我的
make
变量名前面加上一个公共前缀,这样你就可以定义你的变量,比如
JOJOIGA_SOURCES=$(通配符*.c)
jojojoiga_SHELL=SHELL
等等……

你不能在Makefile中将
SHELL
用作变量,它用来知道SHELL是什么(/bin/sh、/bin/bash等)将在Makefile中使用

CC = gcc
CFLAGS = -Wall -m32 -g -fno-stack-protector -z execstack -O0
EXE_SOURCES = Shell.c

EXE = Shell


.PHONY: all target1 clean

all: target1 

target1: $(EXE)

$(EXE): $(EXE_SOURCES)
    $(CC) $(CFLAGS) $^ -o $@

clean:
    rm -rf $(EXE)

您不能将
SHELL
用作Makefile中的变量,它用于了解将在Makefile中使用哪个SHELL(/bin/sh、/bin/bash等)

CC = gcc
CFLAGS = -Wall -m32 -g -fno-stack-protector -z execstack -O0
EXE_SOURCES = Shell.c

EXE = Shell


.PHONY: all target1 clean

all: target1 

target1: $(EXE)

$(EXE): $(EXE_SOURCES)
    $(CC) $(CFLAGS) $^ -o $@

clean:
    rm -rf $(EXE)

更准确地说,
$(SHELL)
用于运行规则中的每个操作行,并且由于运行第一个操作时
SHELL
不存在,
make
正在抱怨。更准确地说,
$(SHELL)
用于运行规则中的每个操作行,由于运行第一个操作时,
Shell
不存在,
make
正在抱怨。是的,我的原始代码有选项卡。复制代码时遇到一些问题。无论如何,谢谢:)是的,我的原始代码有选项卡。。按原样复制代码时遇到了一些问题。无论如何,谢谢你:)