gpt4 book ai didi

c++ - g++ 合并 : ld: fatal: file main. o:未知文件类型

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

我正在浏览网络和我所有的项目文件以寻找解决方案,但仍然找不到我的链接器无法完成工作的原因。一切都顺利编译成 .o 文件,但最后一个 make 命令失败。这是 Makefile 的内容:

CXX = g++
CXXFLAGS = -Wall -pedantic -c
OBJS = main.o operacje.o porownaj.o
dzialania: $(OBJS)
$(CXX) $^ -o $@

main.o: main.cpp operacje.h porownaj.h
$(CXX) $(CXXFLAGS) $^ -o $@

operacje.o: operacje.cpp operacje.h porownaj.h
$(CXX) $(CXXFLAGS) $^ -o $@

porownaj.o: porownaj.cpp operacje.h porownaj.h
$(CXX) $(CXXFLAGS) $^ -o $@

clean:
rm -f *o

再次,这是弹出的错误:

g++ main.o operacje.o porownaj.o -o dzialania
ld: fatal: file main.o: unknown file type
ld: fatal: file processing errors. No output written to dzialania
*** Error code 1
make: Fatal error: Command failed for target `dzialania'

我确定这是一个基本错误,但在盯着文件看了几个小时后,我无论如何都不会注意到它。也许你们中的一些人以全新的眼光注意到了这个错误。

顺便说一句。这是我长期被动潜伏后的第一篇文章,我希望我做的一切都是对的。提前致谢!

@edit1 好的,我做了所有建议的更正

@edit2 看来问题是我的程序模块划分不当造成的。我会重新安排它的结构,然后让您知道它是否有效。感谢大家的支持!

@edit3 好的,我更改了程序的结构,一切运行顺利,再次感谢!

最佳答案

尝试使用 $<而不是 $^在你的编译规则中 main.o , operacje.o , 和 porownaj.o :

main.o: main.cpp operacje.h porownaj.h
$(CXX) $(CXXFLAGS) $< -o $@

operacje.o: operacje.cpp operacje.h porownaj.h
$(CXX) $(CXXFLAGS) $< -o $@

porownaj.o: porownaj.cpp operacje.h porownaj.h
$(CXX) $(CXXFLAGS) $< -o $@

这将导致 make 只编译相应的 .cpp文件。当您使用 $^头文件传递给 g++命令告诉编译器为它们创建预编译头 - 这就是 main.o 中的结尾而不是 main.cpp 的目标文件.

关于c++ - g++ 合并 : ld: fatal: file main. o:未知文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22336825/

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