完整的报错内容如下:
/bin/sh: 1: /bin/sh: 1: /bin/sh: 1: /xxx/usr/lib/qt5/bin/moc: Exec format error/xxx/usr/lib/qt5/bin/moc: Exec format error
初步判断是由于在X86计算机上交叉编译arm64平台的qt工程时,调用了ARM平台的moc(元对象编译器)和uic(用户界面编译器), 但显然在X86计算机上应该调用X86平台的,否则就会出现Exec format error。
暂时的解决办法是,将X86的moc,uic,rcc文件直接拷贝到交叉编译系统目录下替换原文件。
sudo cp /usr/lib/qt5/bin/moc /xxx/cross_compile/usr/lib/qt5/moc
sudo cp /usr/lib/qt5/bin/uic /xxx/cross_compile/usr/lib/qt5/uic
sudo cp /usr/lib/qt5/bin/rcc /xxx/cross_compile/usr/lib/qt5/bin
但个人更希望直接设置cmake或系统环境变量让qt能自行调用/usr/lib/qt5/bin中的执行程序,但目前没有找到方法。。看到的朋友若有更好的解决办法还望告知一下^ . ^