遇到这个问题,是因为我自己交叉编译了QT的库,然后再根据这个库,交叉编译了QT的应用程序,将应用程序拷贝到板子上时,提示了这个问题。我使用之前的环境编译的程序就不会出现这个问题。
首先根据网友的提示,我确定了我的文件是有可执行权限的,我的可执行文件和我的系统也是匹配的,都是32位的。同时我使用相同的编译器进行编译,其他程序是可以执行的。
后面根据以为大佬的提示,使用readelf查看信息,最终解决了。如下:
readelf -l hello | grep interpreter //-l 查看依赖哪些库, hello 是我的程序
显示[Requesting program interpreter: /lib/ld-linux.so.3]
说明我的程序依赖 /lib/ld-linux.so.3 这个库。
我去 /lib这个目录下,发现没有找到ld-linux.so.3
后面查看信息知道,ld-linux.so.3 是个软链接。链接到我的 ld-linux-armhf.so.3这个库, ld-linux-armhf.so.3 这个库又链接到ld-2.21.so 这个库。执行命令 ln -s ld-linux-armhf.so.3 ld-linux.so.3 //建立软链接
然后再执行程序,发现程序可以正常运行了。