我的makefile正在生成5/7 .o文件。知道为什么拒绝进入entry.o和productiondb.o吗?注意:文件中同时存在entry.cpp和production.cpp。
asgmt01: showreport.o entry.o reporter.o productiondb.o stationdata.o yeardata.o resourcecount.o entry.h reporter.h productiondb.h stationdata.h yeardata.h resourcecount.h
g++ showreport.o entry.o reporter.o productiondb.o stationdata.o yeardata.o resourcecount.o -g -Wall -o asgmt01
entry.o: entry.h
reporter.o: reporter.h
productiondb.o: productiondb.h
stationdata.o: stationdata.h
yeardata.o: yeardata.h
resourcecount.o: resourcecount.h
.PHONY: x
x: #cleanthe directory
rm -f *.o asgmt01
应该编译,但我得到以下结果:
制作
g ++ -c -o showreport.o showreport.cpp
g ++ -c -o Reporter.o Reporter.cpp
g ++ -c -o stationdata.o stationdata.cpp
g ++ -c -o yeardata.o yeardata.cpp
g ++ -c -o resourcecount.o resourcecount.cpp
g ++ showreport.o entry.o记者.o productiondb.o stationdata.o yeardata.o resourcecount.o -g -Wall -o asgmt01
g ++:错误:entry.o:没有这样的文件或目录
g ++:错误:productiondb.o:没有这样的文件或目录
make:*** [asgmt01]错误1
update:
asgmt01: productiondb.o stationdata.o yeardata.o resourcecount.o entry.o reporter.o showreport.o productiondb.h stationdata.h yeardata.h resourcecount.h entry.h reporter.h
g++ productiondb.o stationdata.o yeardata.o resourcecount.o entry.o reporter.o showreport.o -g -Wall -o asgmt01
productiondb.o: productiondb.cpp productiondb.h
g++ -g productiondb.cpp productiondb.h -o productiondb.o
stationdata.o: stationdata.cpp stationdata.h
g++ -g stationdata.cpp stationdata.h -o stationdata.o
yeardata.o: yeardata.cpp yeardata.h
g++ -g yeardata.cpp yeardata.h -o yeardata.o
resourcecount.o: resourcecount.cpp resourcecount.h
g++ -g resourcecount.cpp resourcecount.h -o resourcecount.o
entry.o: entry.cpp entry.h
g++ -g entry.cpp entry.h -o entry.o
reporter.o: reporter.cpp reporter.h
g++ -g reporter.cpp reporter.h -o reporter.o
showreport.o: showreport.cpp
g++ -g showreport.cpp -o showreport.o
.PHONY: x
x: #cleanthe directory
rm -f *.o asgmt01
结果:
g ++ -g productiondb.cpp productiondb.h -o productiondb.o
/ usr / lib /../ lib64 / crt1.o:在“ _start”函数中:
/home/abuild/rpmbuild/BUILD/glibc-2.18/csu /../ sysdeps / x86_64 / start.S:118:未定义对“ main”的引用
/tmp/cc95fNHG.o:在函数“ productiondb :: productiondb()”中:
/home/student/matthew.cole3/cs261/production/productiondb.cpp:9:未定义对“ StationData :: StationData()”的引用
/home/student/matthew.cole3/cs261/production/productiondb.cpp:9:对“ StationData ::〜StationData()”的未定义引用
/tmp/cc95fNHG.o:在函数`productiondb ::〜productiondb()'中:
/home/student/matthew.cole3/cs261/production/productiondb.cpp:17:未定义对`StationData ::〜StationData()'的引用
/tmp/cc95fNHG.o:在函数`productiondb :: addData(entry const&)'中:
/home/student/matthew.cole3/cs261/production/productiondb.cpp:24:对“ StationData :: add(entry const&)”的未定义引用
/home/student/matthew.cole3/cs261/production/productiondb.cpp:27:对`StationData :: add(entry const&)'的未定义引用
/home/student/matthew.cole3/cs261/production/productiondb.cpp:30:对`StationData :: add(entry const&)'的未定义引用
/home/student/matthew.cole3/cs261/production/productiondb.cpp:33:未定义对“ StationData :: add(entry const&)”的引用
/home/student/matthew.cole3/cs261/production/productiondb.cpp:36:未定义对“ StationData :: add(entry const&)”的引用
/tmp/cc95fNHG.o:/home/student/matthew.cole3/cs261/production/productiondb.cpp:39:后面有更多对“ StationData :: add(entry const&)”的未定义引用
collect2:错误:ld返回1个退出状态
make:*** [productiondb.o]错误1
答案 0 :(得分:1)
通常,Makefile的每个条目都应提供构建命令,如下所示:
entry.o: entry.cpp entry.h
g++ -c $< -o $@
其中变量$<
指向第一个输入entry.cpp
; $@
引用输出名称entry.o
;并且entry.h
被列为附加依赖项,因此,如果entry.o
中的任何一个更改,Make都会重建entry.{cpp,h}
。
由于您的Makefile条目不完整,因此无法生成。