Linux文件系统的坑

问题:文件存在却报no such file or directory

可能原因:

  1. 文件格式问题

    (1)使用vi打开报错文件,用指令:set ff查看该文件格式

    (2)若为非unix格式,使用指令:set ff=unix修改文件格式为unix;

    (3):wq保存文件修改并退出编辑,重新执行程序,排查问题是否已解决;

还不行的话试一下之前的版本,把那个config.yaml用vi打开,用 指令:set ff看看文件格式是不是unix,不是的:set ff=unix再试一下。

  1. 可执行文件的lib库位数不对

    (1)查看文件信息,可以看到文件是存在的,并且权限是可以执行的。

    (2)用uname命令打印系统信息,发现系统是64位系统

1
2
3
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

(3)用file命令查看文件信息,发现是一个32位可执行文件。

1
2
3
file ./tshref
# --------------------
# ./tshref: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.2.5, not stripped
(4) 要想在64位系统上与运行32位程序,则需要安装32位lib库。

对于Ubuntu用户可以使用下面的命令安装。

1
2
3
4
5
6
7
8
9
10
sudo apt-get install ia32-libs
#---------------------
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package ia32-libs is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
lib32z1 lib32ncurses5 lib32bz2-1.0

过程中有可能找不到需要的库,但是会有几个替代包,选择安装其中一个。

1
sudo apt-get install lib32bz2-1.0
-------------本文结束感谢您的阅读-------------
0%