这是我的makefile:
CC = g++
CFLAGS = -Wall -c
OBJS = report.o commandLine.o configuration.o tool.o project2demo.o
project2: $(OBJS)
$(CC) $(OBJS) -o project2
report.o: report.cpp report.h
$(CC) $(CFLAGS) report.cpp
commandLine.o: commandLine.cpp commandLine.h tool.h
$(CC) $(CFLAGS) commandLine.cpp
configuration.o: configuration.cpp configuration.h
$(CC) $(CFLAGS) configuration.cpp
tool.o: tool.cpp tool.h
$(CC) $(CFLAGS) tool.cpp
project2demo.o: tool.h project2demo.cpp
$(CC) $(CFLAGS) project2demo.cpp
clean:
rm *.o project2
我得到的错误是:
file not recognized: File format not recognized collect2: ld returned 1 exit status
我无法弄清楚为什么会这样。我看了一些类似的主题,解决方案没有用。例如,我尝试删除无法识别的目标文件(report.o)并重建它。有什么建议吗?
谢谢!
编辑:请求完整错误:
report.o: file not recognized: File format not recognized
collect2: ld returned 1 exit status
make: *** [project2] Error 1
编辑2:我忘了添加它适用于Windows。但是当我使用puTTy连接到linux机器时,我收到了这个错误。
答案 0 :(得分:0)
[...]它适用于Windows。但是当我使用PuTTy连接到Linux机器时,我收到了这个错误。
如果您使用的是共享文件系统,则需要在Windows和Linux之间切换时调用make clean
。
Windows和Linux使用不同的目标文件格式,因此您无法在另一个操作系统上使用一个操作系统的目标文件。使用共享文件系统时,make
不会自动猜测应该重新编译目标文件,并使用在不同操作系统下编译的旧文件。这将导致您观察到的错误。