浅谈Linux程序路径

理解Linux程序路径可以更加方便我们读懂linux文件系统。

一个完整的Linux程序一般包括bin、lib、share等子目录,bin目录下为可执行的二进制文件;lib目录下为程序的动态链接库文件;share目录下为一些文档说明、帮助文件等。

一、系统程序路径

Linux系统有些开机启动程序和一些终端命令,它们都是可执行的二进制文件,一般在系统安装过程中予以安装,其存放的路径就在/bin/sbin目录下。

/bin    #存放着二进制可执行文件,如ls,cat等系统命令就都放在此目录中
/sbin   #存放着只有root用户才能访问的二进制可执行文件,如ifconfig等命令

二、通过包管理器安装的程序路径

通过包管理器安装的程序一般在/usr目录下

以apache2(httpd)为例:

ubuntu系统终端输入whereis apache2 可以得到如下信息(已排版)

apache2:
/usr/sbin/apache2         #二进制程序,也可理解为windows下的exe文件
/usr/lib/apache2          #动态链接库文件
/etc/apache2     		  #配置文件
/usr/share/apache2        #说明文档
/usr/share/man/man8/apache2.8.gz    #man帮助文件

RHEL8系统终端输入whereis httpd 也可以得到类似结构的信息

[root@hollowman ~]# whereis httpd
httpd: /usr/sbin/httpd /usr/lib64/httpd /etc/httpd /usr/share/httpd /usr/share/man/man8/httpd.8.gz

三、用户手动编译安装的程序路径

用户手动编译安装源码文件时可以指定安装路径(注意需要先安装好依赖包),如下面的例子,将pcre-8.35安装到了/usr/local/pcre目录

#安装依赖包(源码安装必备的依赖包)
[root@hollowman ~]# yum install make gcc-c++

#下载软件包(一般我们将软件包都下载到 /usr/local/src/目录下)
[root@hollowman ~]# cd /usr/local/src/
[root@hollowman src]# wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
[root@hollowman src]# tar zvxf pcre-8.35.tar.gz 
[root@hollowman src]# ls
pcre-8.35  pcre-8.35.tar.gz
[root@hollowman src]# cd pcre-8.35/

#手动编译安装到指定目录/usr/local/pcre
[root@hollowman pcre-8.35]# ./configure --prefix=/usr/local/pcre
[root@hollowman pcre-8.35]# make
[root@hollowman pcre-8.35]# make install
#查看程序路径
[root@hollowman local]# cd pcre
[root@hollowman pcre]# ls
bin  include  lib  share

[root@hollowman pcre]# tree
.
├── bin
│   ├── pcre-config
│   ├── pcregrep
│   └── pcretest
├── include
│   ├── pcrecpparg.h
│   ├── pcrecpp.h
│   ├── pcre.h
│   ├── pcreposix.h
│   ├── pcre_scanner.h
│   └── pcre_stringpiece.h
├── lib
│   ├── libpcre.a
│   ├── libpcrecpp.a
│   ├── .........
│   ├── libpcre.so.1 -> libpcre.so.1.2.3
│   ├── libpcre.so.1.2.3
│   └── pkgconfig
│       ├── libpcrecpp.pc
│       ├── libpcre.pc
│       └── libpcreposix.pc
└── share
    ├── doc
    │   └── pcre
    │       ├── AUTHORS
    │       ├── ChangeLog
    │       ├── COPYING
    │       ├── html
    │       │   ├── index.html
    │       │   ├── NON-AUTOTOOLS-BUILD.txt
    │       │   ├── pcre16.html
    │       │   ├── pcre32.html
    │       │   ├── ........
    │       └── README
    └── man
        ├── man1
        │   ├── pcre-config.1
        │   ├── pcregrep.1
        │   └── pcretest.1
        └── man3
            ├── pcre16.3
            ├── pcre16_assign_jit_stack.3 -> pcre_assign_jit_stack.3
            ├── .........

11 directories, 194 files

如果不指定安装路径,系统会将其默认安装到/usr/local目录下,同样以pcre-8.35为例

#安装依赖包 略
#下载软件包 略
#手动编译安装,不指定安装目录
[root@hollowman pcre-8.35]# ./configure
[root@hollowman pcre-8.35]# make
[root@hollowman pcre-8.35]# make install
[root@hollowman include]# cd /usr/local
[root@hollowman local]# ls
bin  etc  games  include  lib  lib64  libexec  sbin  share  src
[root@hollowman local]# tree bin
bin
├── pcre-config
├── pcregrep
└── pcretest
[root@hollowman local]# tree include/
include/
├── pcrecpparg.h
├── pcrecpp.h
├── pcre.h
├── pcreposix.h
├── pcre_scanner.h
└── pcre_stringpiece.h

不难发现,/usr/local/下的bin目录和include目录下的文件均为刚刚安装的。

如果所有的程序均不指定安装路径,则程序的可读性将大大降低,如bin目录下将保存多个程序的二进制执行文件,当然也有好处,不用设置环境变量,因为系统已经默认将/usr/local/bin添加到环境变量了,也就是可以直接执行pcre的有关命令,如:

[root@hollowman local]# pcre-config --version
8.35

四、源码一般放哪里

1.系统级的源码路径一般放在/usr/src目录下。

[root@hollowman local]# ls /usr/src
debug  kernels

2.用户级的源码路径一般放在/usr/local/src目录下,这也就是上面为什么下载目录要切换到/usr/local/src的原因。

猜你喜欢

转载自blog.csdn.net/ymz641/article/details/113873241