gpt4 book ai didi

c++ - 生成文件不起作用

转载 作者:行者123 更新时间:2023-11-28 00:58:11 25 4
gpt4 key购买 nike

我在使用我的 makefile 时遇到这个错误:

make: Warning: File `makefile' has modification time 56 s in the future
make: Circular Menu.o <- Menu.o dependency dropped.
g++ a.out main.o Menu.o CourseList.o Course.o LecturerList.o StudentList.o Lecturer.o Student.o -o a.out
make: warning: Clock skew detected. Your build may be incomplete.

这是我的生成文件:

a.out: main.o Menu.o CourseList.o Course.o LecturerList.o StudentList.o Lecturer.o Student.o
g++ main.o Menu.o CourseList.o Course.o LecturerList.o StudentList.o Lecturer.o Student.o -o a.out

main.o: main.cpp Lecturer.o LecturerList.o Student.o StudentList.o Course.o CourseList.o Menu.o
g++ -c main.cpp

Menu.o: Menu.o Lecturer.o LecturerList.o Student.o StudentList.o Course.o CourseList.o
g++ -c Menu.cpp

CourseList.o: CourseList.cpp
g++ -c CourseList.cpp

Course.o: Course.cpp
g++ -c Course.cpp

LecturerList.o: LecturerList.cpp
g++ -c LecturerList.cpp

StudentList.o: StudentList.cpp
g++ -c StudentList.cpp

Lecturer.o: Lecturer.cpp
g++ -c Lecturer.cpp

Student.o: Student.cpp
g++ -c Student.cpp

错误在哪里,我该如何解决?我知道这可能有点令人困惑,但我希望这里有人可以帮助我解决这个问题,我为此苦恼了几个小时......谢谢!!

注意:我编辑了错误和 makefile。现在我只有 1 个问题

最佳答案

首先,“文件‘makefile’的修改时间为 future 56 秒”的问题是一个系统管理员问题。您将文件存储在网络文件系统上。您的计算机和服务器计算机不同意现在的时间。要解决此问题,请调整一台或两台计算机上的日期,使它们一致。要维护该协议(protocol),请使用类似“ntpd”的内容。

其次,循环依赖是因为您在 Makefile 中混淆了“.o”和“.cpp”文件。具体来说,您将 .o 文件列为其他 .o 文件的源依赖项,(几乎)从来没有这种情况。 Menu.o:Menu.o 就是这样一种循环依赖。

第三,“未找到文件 a.out”消息是因为您在链接器命令行上将“a.out”指定为输入和输出文件。

这是您的 Makefile 的一个固定版本(如果您将其复制粘贴到您的编辑器中,请不要忘记修复选项卡。)

a.out: main.o Menu.o CourseList.o Course.o LecturerList.o StudentList.o Lecturer.o Student.o
# Lose extraneous "a.out" on the next line.
g++ main.o Menu.o CourseList.o Course.o LecturerList.o StudentList.o Lecturer.o Student.o -o a.out

# Get rid of all '.o' in the next line. They don't make any sense.
main.o: main.cpp
g++ -c main.cpp

# Change "Menu.o" to "Menu.cpp" and get rid of other .o files
Menu.o: Menu.cpp
g++ -c Menu.cpp

CourseList.o: CourseList.cpp
g++ -c CourseList.cpp

Course.o: Course.cpp
g++ -c Course.cpp

LecturerList.o: LecturerList.cpp
g++ -c LecturerList.cpp

StudentList.o: StudentList.cpp
g++ -c StudentList.cpp

Lecturer.o: Lecturer.cpp
g++ -c Lecturer.cpp

Student.o: Student.cpp
g++ -c Student.cpp

最后,如果您要使用模式规则和自动变量,您的 Makefile 可以变得更简单和更易读。

这是一个更短的版本:

a.out: main.o Menu.o CourseList.o Course.o LecturerList.o StudentList.o Lecturer.o Student.o
g++ $^ -o a.out

# Take advantage of Makefile's pattern match to avoid specifying every. single. file.
%.o: %.cpp
g++ -c $<


引用: http://www.gnu.org/software/make/manual/make.html

关于c++ - 生成文件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10031421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com