arm执行./hello出现bash: hello: No such file or directory

问题:在虚拟机里编写了一个输出hello,world的代码,代码很简单就不写了。使用交叉编译器编译之后生成可执行文件hello,           放在arm里执行输入  ./hello时却出现bash:No such file or directory。

解决:输入命令chmod 777 hello之后并不能解决问题。在虚拟机里可执行文件目录下输入readelf -a hello,可以看到输出很多信息,其中有一条是Requesting program interpreter: /lib/ld-linux.so.3。而在开发板的lib下也没有发现有ld-linux.so.3文件。说明提示信息说没有文件和目录并不是说没有hello文件,而是没有所需的库。所以我们在开发板里把所需文件加上即可。

        在虚拟机里找到交叉编译器的lib文件,比如我的是Zedboard开发板,交叉编译器是arm-xilinx-linux-gnueabi-gcc。我的文件所在位置是programm/arm-xilinx-linux-gnueabi/libc/lib。文件所在位置由交叉编译器安装位置决定。在lib下可以发现 ld-linux.so.3文件,但是该文件是个链接符号。在lib下打开终端,输入命令ls -l可以发现ld-linux.so.3指向ld-2.13.so。我们复制虚拟机里lib里的ld-2.13.so,可以通过NFS粘到开发板的lib目录下,在开发板lib目录下输入ln -s ld-2.13.so ld-linux.so.3即可创建链接符号。发现即使这样做了可能仍不能解决问题,只是提示的错误变了。干脆把虚拟机lib里的所有文件都拷贝到开发板的lib目录下,链接符号无法复制选择跳过。按照虚拟机里的文件同样在开发板lib里创建所有的链接符号,命令为ln -s  XX XX。虽然麻烦,但是这样之后,就可以顺利执行可执行文件了。

      参考文章:http://www.360doc.com/content/17/0424/21/32407298_648343381.shtml

猜你喜欢

转载自blog.csdn.net/qq_22863619/article/details/80294232