我最近买了一台Macbook Pro,我想在终端用C做一些编码。
我可以使用以下命令编译代码:
gcc filename.c –o filename
但我想用make命令编译它,因为我知道这是最佳实践,我想遵循最佳实践。
make filename cc filename.c -o filename
这个命令给我以下输出:
make: Nothing to be done for `ex01'.
make: *** No rule to make target `cc'. Stop.
请注意,我已经安装了Xcode和Xcode开发人员命令行工具 在 / usr / bin 文件夹中,我看到了 make 和 makefile 属性。
有没有人知道我应该怎么做才能用makefile和cc参数编译?
答案 0 :(得分:14)
使用此内容在同一路径上创建名为Makefile
的文件:
CC = cc
CFLAGS = -std=c99 -pedantic -Wall
OBJECTS = filename.o
all: appname
filename.o: filename.c
$(CC) $(CFLAGS) -c filename.c
appname: $(OBJECTS)
$(CC) $(OBJECTS) -o appname
clean:
rm -f *.o appname
然后运行:
make
当然,将appname
替换为您的程序名称
注意:
之前必须有“标签”(不是空格)$(CC) $(CFLAGS) -c filename.c
和
$(CC) $(OBJECTS) -o appname
答案 1 :(得分:5)
我正在关注相同的tutorial,并遇到了类似的问题。
我不知道你究竟做了什么,但我认为这个错误是错误的命令。您键入了make filename cc filename.c -o filename
,但教程指示我们使用make filename
,而不使用cc filename.c -o filename
部分。也许你读过一个旧版本?
并且make filename
工作正常,You don't need a Makefile。
仅供参考,以下是我如何遇到问题以及如何解决问题:
输入以下代码,并将其保存在名为" ex1"
的文件中 int main(int argc, char *argv[])
{
puts("Hello world.");
return 0;
}
make ex1
make: Nothing to be done for 'ex1'.
正如您所看到的,我的错误是源代码的文件名应为 ex1.c ,而不是 ex1 。
当我将文件名更改为ex1.c并执行make ex1
时,它可以正常工作。
答案 2 :(得分:0)