2009-09-23 33 views
5

据我所知,安装在Linux/UNIX上的C++命令行程序时,这是习惯,而不是把它留在它原来的目录,将其移动到一个目录已经是路径上,所以我有一个make install的条目:的Linux/UNIX安装数据文件

mv ayane /usr/local/bin 

看起来有点远一点,我要与目录或两个完整的配置,数据和脚本文件,该程序需要读取,在一些落得启动,稍后根据需求启动,并在某些情况下随后进行修改并再次保存。

这会导致程序如何知道数据文件的位置。在我的Ubuntu Linux虚拟机中查看/ bin,它似乎辜负它的名字,只包含二进制文件,所以数据文件通常不会与程序放在同一目录中。

什么是用于将数据文件可以知道该程序的位置,通常的解决办法?

+0

相关:http://stackoverflow.com/questions/528399/what-should-linux-unix-make-install-consist-of – dmckee 2009-09-23 18:13:14

回答

7

有一些文件系统标准,阅读了上FHS或类似的东西(注意,是文件系统布局不同的方法)。

基本上,你把你的可执行的二进制文件到$prefix/bin/,每个主机配置进入$prefix/etc/,每个用户到用户的主目录,拱无关的静态数据为$prefix/share,拱相关的数据和库到$prefix/lib和可变数据通常会进入/var/lib/

最好是在编译时和运行时都可以配置这个东西。也习惯于不手动编写Makefilesinstall目标,你可能想看看autotools套件或类似的(品味)。

+2

将数据放入$ prefix/share/和$ prefix是更有意义的/ lib/。如果有一个以上的配置文件:在/ etc/ PiedPiper 2009-09-24 11:41:21

+2

PiedPiper,没事的时候,我指的是'$前缀/ lib'和'$前缀/ share'我没有暗示文件应该一定是说的直接后裔目录。 – 2009-09-24 12:12:05

2

你应该看看File System Hierarchy标准。

简单地说,如果你计划需要全系统文件,那么配置应该在/etc。资源(如脚本和图像文件)位于/usr/share。运行数据进入/var/run

当然,每个用户文件都位于用户的主目录中。