转自http://blog.csdn.net/yx_l128125/article/details/7418882
1、关于-/bin/sh:xx(命令) not found 的几种原因:
1./bin/目录下没有这个命令;
2.bin/目录有这个命令,只是执行权限不够,或者程序执行权限不够;
3.程序需要的静态库或者动态库没有;
4、没有移植触摸屏的驱动程序
2、解决办法:
原因一的解决方法:安装busy box将busy box支持的命令安装到文件系统的bin目录下;(只要安装了busy box它会自动加载命令到bin目录下。
原因二的解决方法:在/bin/目录下找到对应的命令,修改其权限为777;具体操作: chmod 777 xx(命令) 【附加:在编写执行脚本文件时不能运行也大多是没有修改脚本权限的问题(命令其实就是一个特殊的脚本)】
原因三的解决方法:
(1)最“高效”的解决方法:用命令:arm-linux-readelf -d xxx(目标文件/命令) 查看xxx使用的动态库
如图:我的目标文件使用的动态库是libts-0.0.so.0 ,libdl.so.2,libc.so.6
arm-linux-readelf -a ts_calibrate |grep lib
于是我便去交叉编译器所在目录/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib下的动态库中寻找所需的上面三个库libts-0.0.so.0 ,libdl.so.2,libc.so.6 ,并复制到根文件系统的lib目录下:
原因四的解决方法
3、arm-linux-readelf工具的使用
ELF = Executable and Linkable Format,可执行连接格式,是UNIX系统实验室(USL)作为应用程序二进制接口(Application Binary Interface,ABI)而开发和发布的,扩展名为elf。
arm-linux-readelf是一个相当实用的elf文件查看工具,查看帮助
输入arm-linux-readelf -h
常用的:
arm-linux-readelf -a
当然,如果只看动态链接库,一般使用arm-linux-readelf -d