Linux程序的安装路径

无论Windows还是Linux,安装软件实质是复制一些列文件到磁盘中。这些文件包括动态和静态库(包含二进制内容的文件)、头文件、可执行文件,以及一些配置文件等。

除了复制文件,为了让其他程序能够找到这些文件,都需要设置全局变量(比如path)来供其他程序检索定位这些文件的位置。Linux中,添加了默认的库、程序、头文件的搜索路径,我们也可以自定义这些搜索路径。

安装程序的实质是复制文件到磁盘上,因此,到底将文件复制到哪里,变得十分关键。默认情况,程序的文件会按照其类型,复制到/usr/local/目录下。比如,库文件会复制到/usr/local/lib;头文件会复制到/usr/local/include;一些共享信息,如程序文档,会复制到/usr/local/share。在每个类别文件夹中,程序会集中存放。有时为了防止命名冲突,某个程序的文件会单独放在一个文件夹中。比如程序abc的lib文件,会放到/usr/local/lib/abc/目录下。

通常来说不会出现文件名称冲突的情况

在使用configure的时候,可能我们权限不足,无法向/usr/local文件夹中写入数据;或者为了文件布局清晰,希望放入/home/username目录下。此时,我们可以使用参数:–prefix=/home/username/usr/local。该参数等号右边的值为安装程序的目标目录,程序所有的文件都将放入该文件夹。

当我们安装n个程序到同一个目录下时,相同的文件夹不会被覆盖。同一类型的文件会被集中存放。比如下面的例子:

我计划安装程序a, b, c三个程序。他们安装后的具体分布如下:
a: lib, include, lib64, libexec, share
b: lib, include, bin, share
c: lib, include, bin, sbin

此时,三个程序分别将对应文件安放在/home/username/usr/local目录下的几个目录中:

lib, include, lib64, libexec, share, bin, sbin

程序开发者能够保证这些程序的文件不会出现重名。因此,我们安装程序,只会不停的append,而不会出现overwrite的情况。如果希望进行更精细的配置,比如,希望程序a的头文件放到/home/username/headers中,可以使用 –includedir=/home/username/headers参数来指定。具体可以参见文章:

https://blog.csdn.net/qq_28787211/article/details/78569067

在调用程序的时候,由于安装目录是我们自己定义的,因此系统无法知道我们到底把程序放在哪里。此时有两种方式:

1,将可执行文件的路径添加到全局变量中,这样Linux就能通过全局变量,搜索到程序。
2,使用全局路径,或者转到程序所在的目录执行程序。

猜你喜欢

转载自blog.csdn.net/zhizifengxiang/article/details/82593550