尝试生成makefile时无法识别文件格式

时间:2016-05-03 20:48:16

标签: c++ makefile

这是我的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机器时,我收到了这个错误。

1 个答案:

答案 0 :(得分:0)

  

[...]它适用于Windows。但是当我使用PuTTy连接到Linux机器时,我收到了这个错误。

如果您使用的是共享文件系统,则需要在Windows和Linux之间切换时调用make clean

Windows和Linux使用不同的目标文件格式,因此您无法在另一个操作系统上使用一个操作系统的目标文件。使用共享文件系统时,make不会自动猜测应该重新编译目标文件,并使用在不同操作系统下编译的旧文件。这将导致您观察到的错误。