![](/img/trans.png)
[英]I've created a code to convert binary to decimal, but doesn't work with more than 10 bits
[英]I've created a Makefile in c that should creates more than one executable, but it does not work
我需要做什么
我正在尝试在 c 中创建一个 Makefile ,它应该从三个不同的.c 文件中创建三个可执行文件。 我想创建 Lez4Es1、Lez4Es1v2 和 Lez4Es3 作为我在两个不同阶段编译和链接的可执行文件。 比如:
gcc -std=c99 -Wall -pedantic Lez4Es1.c -c
gcc -std=c99 -Wall -pedantic Lez4Es1.o -o Lez4Es1
gcc -std=c99 -Wall -pedantic Lez4Es1v2.c -c
gcc -std=c99 -Wall -pedantic Lez4Es1.v2 -o Lez4Es1v2
gcc -std=c99 -Wall -pedantic Lez4Es3.c -c
gcc -std=c99 -Wall -pedantic Lez4Es3.o -o Lez4Es3
我的解决方案
假设在同一目录中有 all.c 文件,我创建了这个 Makefile 但它不起作用:
CC = gcc
CFLAGS += -std=c99 -Wall -pedantic -g
TARGETS = Lez4Es1 \
Lez4Es1v2 \
Lez4Es3 \
.PHONY: all clean cleanall
% : %.o
$(CC) $(CFLAGS) $^ -o $@
%.o : %.c
$(CC) $(CFLAGS) -c $^
all : $(TARGETS)
clean :
-rm *.o *~ core
cleanall :
-rm *.o *.txt -f $(TARGETS) *~ core
问题
当我运行 $ make 它从.c 文件而不是从.o 创建可执行文件,这是编译器的 output:
$ make
gcc -std=c99 -Wall -pedantic -g Lez4Es1.c -o Lez4Es1
gcc -std=c99 -Wall -pedantic -g Lez4Es1v2.c -o Lez4Es1v2
gcc -std=c99 -Wall -pedantic -g Lez4Es3.c -o Lez4Es3
如何解决让他做我想做的事情? 有一种方法可以给可执行文件一个不同于 .o 文件的名称吗?
抱歉我的英语不好,如果我没有很好地解释它,我准备编辑它并给你更多细节,谢谢。
尝试删除从源文件创建可执行文件的内置规则:
% : %.c
(没有配方的模式规则会取消该规则)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.