linux - C linux 中的 Makefile 错误

标签 linux makefile

我在 linux 中制作 makefile 时出错。这是我的代码:

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

SHELL = Shell

.PHONY: all target1 clean

all: target1 

target1: $(SHELL)

$(SHELL): $(SHELL_SOURCES)
    $(CC) $(CFLAGS) $^ -o $@

clean:
rm -rf $(SHELL)

我得到的错误是:

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

最佳答案

您不能将 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)

关于linux - C linux 中的 Makefile 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41346049/

相关文章:

c - 如何让变量名和行号出现在 GDB 中?

ios - GitLab Ci Runner 错误 "bash: line 21: xcodebuild: command not found "

makefile - Gnu Make 自动依赖生成

c - mongoc_init undefined reference

ubuntu - 生成文件:foreach "make -C"调用

c++ - 从 C++ 内部获取损坏的符号名称

c - 根据列合并两个文件并排序

linux - 异常处理程序的实际代码驻留在 Linux 中的什么位置?

makefile - 向 Makefile 添加注释

c++ - C Gnu makefile 我不能用 ar 创建一个静态库