非架构不兼容的Exec format error解决:Qt编译main.o执行报错求助
解决“bash: ./main.o: cannot execute binary file: Exec format error”问题
嘿,我一眼就看出问题所在了——你搞错了要运行的文件!你现在试图执行的main.o只是编译过程中生成的中间目标文件,它还没有完成链接步骤,根本不是可执行程序。
从你贴出的Makefile里能清楚看到:
- 最终的可执行文件名叫
QTexample(看TARGET = QTexample这一行) - Makefile里的核心规则就是把
main.o和Qt的依赖库链接起来,生成真正能运行的QTexample:
$(TARGET): $(OBJECTS) $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
解决步骤很简单:
- 确保你完整执行了
make命令,不要中途中断。正常完成后,当前目录下会出现QTexample文件。 - 运行这个真正的可执行程序:
./QTexample
你可以用file QTexample命令验证,它会显示类似ELF 64-bit LSB executable的信息,这才是符合系统架构的可执行文件。
之前你查架构没问题是对的,只是找错了文件而已,这个小失误很常见,别担心~
内容的提问来源于stack exchange,提问作者Mario Bernardi




