我试图编译我的项目后添加一个新的源(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库
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] 举报,一经查实,本站将立刻删除。