遇到這個問題,是因爲我自己交叉編譯了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 //建立軟鏈接
然後再執行程序,發現程序可以正常運行了。