我有下面的Makefile,它编译、创建一个可执行文件,然后执行它。

CC=gcc
CFLAGS=-I.
DEPS = hellomake.h
OBJ = hellomake.o hellofunc.o

%.o: %.c $(DEPS)
    $(CC) -c -o $@ $< $(CFLAGS)

hellomake: $(OBJ)
    $(CC) -o $@ $^ $(CFLAGS)
    ./hellomake

它在我的本地机器上运行良好,当它在Travis中构建时,会出现以下错误。
gcc -o hellomake hellomake.o hellofunc.o -I.hellomake.o: file not recognized: File format not recognizedcollect2: ld returned 1 exit statusmake: *** [hellomake] Error 1

最佳答案

您的hellofunc.o来自不同的系统(请尝试file hellofunc.o)。移除它,然后重新编译它。
你在交叉编译吗?您是否在不同的机器上安装了主目录?或许是在另一个架构上打开别人的档案?

09-20 02:07