2009-09-24 83 views
2

我目前正在开发/黑客一个图像分析/转换工具。 其中的过滤器将在运行时使用dlopen & co。哪里把“插件”在Linux中

我的问题是* nix工具安装时通常会在哪里放置插件(* .so文件)?

bin/program 
lib/program/plugins/thisandthat.so 

也许?

其次我该如何使用它,以及在开发过程中,如何在没有安装的情况下使用它。 (这可能是棘手的部分)

我想尽可能避免shell脚本。

感谢关于 罗尼

回答

1

布局看起来很明智。例如,您可以查看当前目录,在开发期间查找环境变量或命令行切换。这取决于您的开发环境和工作流程的细节。

5

通常是/ usr/lib目录/ programmname应该是一个好去处

在开发过程中我想创建一个命令行参数设置为指定的插件搜索路径和刚刚离开的插件例如在build-dir中。

+0

很伤心我不能接受两个答案~~。对不起 – 2009-09-24 09:48:52

3

考虑:

/usr/lib/program/*.so 
2

不要忘记:

$HOME/.program/ 
3

一个很好的指南选择是Filesystem Hierarchy Standard。大多数Linux发行版都使用这个标准。

这是一个非常简短的总结。

将应用程序二进制文件中: 在/ usr/bin中/将progname,在/ usr/local/bin目录/将progname或/选择/的progname

将插件或库文件: /usr/lib中/将progname,/ USR/local/lib目录/将progname或/选择/的progname/lib目录

将主机配置中的应用: 的/ etc /的progname或/ etc /选择/的progname

将用户配置: $ HOME /.progname

将应用程序手册页位于: /usr/shar/man/man1/

/var有单独的层次结构。作为一个例子,使用/ var/log/progname进行日志记录。

回应caf的评论。我发现在编译时选择目标目录非常有用。使用$ PREFIX也可以很容易地将发展版本和发行版本分开。 大部分使用/ usr/progname,/ usr/lib/progname和/ etc/progname

+0

真的是'$ PREFIX/lib/program /',其中'PREFIX'可能是'/ usr','/ usr/local','/ opt'甚至是'/ home/foo'。 – caf 2009-09-24 13:28:42

+0

如果整个应用程序安装在/ opt中,我将只使用/ opt库文件。 我使用$ HOME/.program /进行用户特定配置。类似于ssh使用$ HOME/.ssh – Tobias 2009-09-24 16:21:26

+0

对不起,我不是很清楚 - 通常'PREFIX'会在编译时设置,所以是整个应用程序将安装在它下面的不同位置,比如'$ PREFIX/bin /'和'$ PREFIX/share/doc /'。 – caf 2009-09-25 00:26:39