Ale*_*x B 5 packaging software-installation
如果我安装一个带有非标准前缀的二进制文件,例如/opt/bin/foo,它需要一些来自 的静态文件/opt/share/foo,它如何找到它们?使用相对于可执行文件 ( ../share/foo) 的反向引用?在编译时硬编码?
/opt/bin/foo
/opt/share/foo
../share/foo
应用程序处理可变安装前缀的惯用方式是什么?所有目录都应该加前缀吗?(怎么样/var?)
/var
Gil*_*il' 7
在编译时对此类引用进行硬编码是很常见的,并且可能提供命令行选项或环境变量来覆盖编译时默认值。通常,程序只记住一个配置文件的位置(通常在 下/etc),任何编译时默认值都可以在其中覆盖。这种方法对于由制作操作系统的同一个人编译的开源软件最有意义,作为 Linux 发行版或 BSD 端口的一部分。
/etc
对于以二进制形式分发的应用程序,通常的方法是从它的第零个参数定位应用程序二进制文件。按照惯例,execve(ie argv[0])的第零个参数是二进制文件的路径(这取决于调用者,通常是外壳程序,以遵守约定)。如果argv[0]不包含任何/,应用程序应该对其执行$PATH查找。
execve
argv[0]
/
$PATH
归档时间:
15 年,8 月 前
查看次数:
563 次
最近记录:
15 年,5 月 前