这里以我系统上的一个打印"hello world!"的程序为例,这个是arm平台的,我X86机器上是无法执行的。
执行shell命令: “readelf -l hello-static” #这个是静态编译的,编译时使用了-static选项 命令输出:
执行shell命令: “readelf -l hello-dynamic” #这个是动态编译的 命令输出:
看出两者的区别了么! 动态编译的程序有INTERP段,它指明了程序在加载过程中需要使用的动态链接加载器,如果指定的这个加载器未找到,那么就会提示“ No such file or directory”,如果,找到动态链接加载器,但未找到需要的库,那会有另外的提示。 关于你问题的解决操作: 使用readelf,关注“[Requesting program interpreter: /lib/ld-linux.so.3]”字段。检查目标机里该路径里有没有对应的加载器! 如果没有,你可以使用ln创建一个符号链接以指向你目标机里的动态链接加载器!目测你系统是android,这个我没玩过…… 因为你的系统是androd, 它所使用的c库是bxx什么来着忘记了。如果你编译lcd这个程序的时候使用的编译器不是以bxx为内建c库的话,可能还是无法正常运行(感觉,未测试)…… 最后,希望能帮到你…… |
|
来自: kkq292 > 《可执行文件找不到的方法》