微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使:完全无视规则

我试图编译我的项目后添加一个新的源(processHandling.c),我得到这个结果,当我'

gcc -gstabs -W -Wall -std=gnu99 -c main.c gcc -gstabs -W -Wall -std=gnu99 -c inputHandling.c gcc -gstabs -W -Wall -std=gnu99 -c syscallsWrapper.c gcc -gstabs -W -Wall -std=gnu99 -o myShell main.o inputHandling.o processHandling.o syscallsWrapper.o gcc: error: processHandling.o: No such file or directory make: *** [myShell] Error 1

这是makefile

CC = gcc CFLAGS = -gstabs -W -Wall -std=gnu99 myShell: main.o inputHandling.o syscallsWrapper.o $(CC) $(CFLAGS) -o myShell main.o inputHandling.o processHandling.o syscallsWrapper.o main.o: main.c $(CC) $(CFLAGS) -c main.c inputHandling.o: inputHandling.c $(CC) $(CFLAGS) -c inputHandling.c processHandling.o: processHandling.c $(CC) $(CFLAGS) -c processHandling.c syscallsWrapper.o: syscallsWrapper.c $(CC) $(CFLAGS) -c syscallsWrapper.c clean: -rm myShell *.o

我试着用-d标志运行make,看来由于某种原因make完全忽略了编译processHandling.o的规则; 问题是什么?

另外请注意,如果我使用gcc -c手动编译processHandling,一切正常。

现有的C ++ * nix系统库?

GCC / C如何隐藏控制台窗口?

独立进程之间的套接字句柄传输

在OS X和Linux上cin seekg / tellg的不同行为

在c中使用libtar库

在C / C ++的Linux中获取磁盘标签

readdir之后为什么stat不工作?

拼写检查器的意见,string,也许更多

在linux上分配可执行的内存

如何在Windows应用程序商店中写入txt文件

将processHandling.o添加到myShell目标的依赖项列表中:

myShell: main.o inputHandling.o processHandling.o syscallsWrapper.o $(CC) $(CFLAGS) -o myShell main.o inputHandling.o processHandling.o syscallsWrapper.o

顺便说一句,使用自动变量可以帮助减少重复的文件名称。 例如:

myShell: main.o inputHandling.o processHandling.o syscallsWrapper.o $(CC) $(CFLAGS) -o $@ $^

您需要添加“processHandling.o”作为myShell的先决条件。 否则,在创建myShell时,processHandling.o的规则将不会被应用,因为makefile认为myShell不需要processHandling.o。 你可以简单地像这样添加

myShell: main.o inputHandling.o syscallsWrapper.o processHandling.o $(CC) $(CFLAGS) -o myShell main.o inputHandling.o processHandling.o syscallsWrapper.o

检查你是否真的有文件processHandling.c 。 此错误意味着源文件尚未找到。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐