c++合并:ld: fatal:文件主.O:未知文件类型
g++ consolidation: ld: fatal: file main.o: unknown file type
我正在扫描网络和我所有的项目文件的解决方案,但仍然无法找到为什么我的链接器不会完成工作的答案。一切都顺利地编译成.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'
我确信这是某种基本的错误,但在盯着文件看了几个小时后,我不会注意到它。也许你们中的一些人会以全新的眼光注意到这个bug。
顺便说一句。这是我在长期被动潜伏之后的第一个帖子,我希望我做的一切都是对的。提前感谢!
@edit1 OK,我做了所有建议的更正
@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
的对象文件。
GNU make
变量定义,如CC = g++
或CFLAGS = -Wall -pedantic
等。
CC = g++
CFLAGS = -Wall -pedantic
OBJS = main.o operacje.o porownaj.o
顺便说一句,你可能是指
CXX = g++
CXXFLAGS = -Wall -pedantic
你当然不希望-c
显式地出现在CFLAGS
或CXXFLAGS
中;你真应该把它去掉。
同样,recipes应该在它的规则之后,所以你想要
dzialania: $(OBJS)
$(LINK.cc) $^ -o $@
operacje.o: operacje.cpp operacje.h porownaj.h
$(CXX) $(CXXFLAGS) -c $< -o $@
这几个空格实际上是一个制表符字符
运行make -p
了解make
已知的规则;参见这个答案和那个答案。
花点时间阅读GNU make文档
相关文章:
- 读取文件时运行时的未知行为
- VS2019:资源文件错误:中性(默认)(未知子语言:0x8)
- MacOS 上的 LLVM - 标准文件 iosfwd 中未知类型名称'template'
- C 包括文件会导致未知错误
- 如何修复QFile打开错误(未知错误),即使文件存在
- 将windows软件中的未知数据库文件转换为MySqli数据库
- 将文件的未知部分读取到矢量
- 如何从输入文件中查找未知数量的行和列
- 如何找出输入文件中未知数量的行和列
- C++ 在.h文件中使用带有结构的模板,得到未知错误
- 将两个尺寸未知的文本文件中的两个矩阵相乘
- 我正在尝试通过 Boost 图形库从 Graphviz DOT 文件中读取图形.如何读取存储在数组中的未知数量的属性
- 您的APP_BUILD_SCRIPT指向未知文件:/jni/Android.mk F:/Android/Android-
- 自动生成的 cpp 文件中未知大小的多维数组的标头声明
- 错误:distutils 扩展模块中'.hpp'未知文件类型
- C++ 程序,用于将具有恒定(但未知)列数的未知大小的 CSV 文件(仅填充浮点数)读取到数组中
- 如何读取二进制文件的块(未知大小)
- 断言失败 <0 <= i && i < <int>vv.size<>> 在未知函数中,文件 src\matrix.cpp,第 912 行
- 如何将.txt文件中的未知数字整数保存到数组中
- 如何解析一行上变量数量未知的文本文件?