最近在使用Linux操作系统执行一个可执行文件,结果出现了No such file or directory的提示,表示很疑惑。
./tshrf bash: ./tshref: No <a href="http://www.itxz.com/?tag=such" title="查看更多关于such的文章" target="_blank">such</a> file or <a href="http://www.itxz.com/?tag=directory" title="查看更多关于directory的文章" target="_blank">directory</a>
查看文件信息,可以看到文件是存在的,并且是可以执行的。
-rwxr-xr-x 1 yuan yuan 20581 4月 29 2004 tshref
查阅资料后,原因是系统位数与该可执行文件需要的lib库位数不匹配。
用uname命令打印系统信息,发现系统是64位系统
uname -a
Linux yuan-vm 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
用file命令查看文件信息,发现是一个32位可执行文件。
<a href="http://www.itxz.com/?tag=file" title="查看更多关于file的文章" target="_blank">file</a> ./tshref ./tshref: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.2.5, <a href="http://www.itxz.com/?tag=no" title="查看更多关于no的文章" target="_blank">no</a>t stripped
要想在64位系统上与运行32位程序,则需要安装32位lib库。
对于Ubuntu用户可以使用下面的命令安装。
sudo apt-get install ia32-libs Reading package lists... Done Building dependency tree Reading state information... Done Package ia32-libs is <a href="http://www.itxz.com/?tag=no" title="查看更多关于no的文章" target="_blank">no</a>t available, but is referred to by a<a href="http://www.itxz.com/?tag=no" title="查看更多关于no的文章" target="_blank">no</a>ther package. This may mean that the package is missing, has been obsoleted, or is only available from a<a href="http://www.itxz.com/?tag=no" title="查看更多关于no的文章" target="_blank">no</a>ther source However the following packages replace it: lib32z1 lib32ncurses5 lib32bz2-1.0
过程中有可能找不到需要的库,但是会有几个替代包,选择安装其中一个。
sudo apt-get install lib32bz2-1.0 lib32bz2-1.0
然后就可以正常运行之前的可执行文件了。