【问题标题】:Whereto put "plugins" in linux在哪里放置“插件”在linux中
【发布时间】:2010-12-01 00:41:41
【问题描述】:

我目前正在开发/破解图像分析/转换工具。 其中的过滤器将在运行时使用 dlopen&co 加载。

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

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

也许?

其次,我如何使用它以及在开发过程中将它放在哪里而不安装它。 (这可能是棘手的部分)

如果可能,我想避免使用 shell 脚本。

感谢 罗尼

【问题讨论】:

    标签: c++ c linux directory plugins


    【解决方案1】:

    通常 /usr/lib/programmname 应该是个好地方

    在开发过程中,我会创建一个命令行参数来指定插件搜索路径,例如将插件留在 build-dir 中。

    【讨论】:

      【解决方案2】:

      布局看起来很合理。例如,您可以在开发过程中查看当前目录、查找环境变量或命令行开关。这取决于您的开发环境和工作流程的详细信息。

      【讨论】:

        【解决方案3】:

        考虑:

        /usr/lib/program/*.so
        

        【讨论】:

          【解决方案4】:

          别忘了:

          $HOME/.program/
          

          【讨论】:

            【解决方案5】:

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

            这是一个非常简短的摘要。

            将应用程序二进制文件放入: /usr/bin/progname、/usr/local/bin/progname 或 /opt/progname

            将插件或库文件放置在: /usr/lib/progname、/usr/local/lib/progname 或 /opt/progname/lib

            将应用程序的主机配置放置在: /etc/progname 或 /etc/opt/progname

            将用户配置放在: $HOME/.progname

            将应用程序手册页放在: /usr/shar/man/man1/

            /var 有单独的层次结构。例如,使用 /var/log/progname 进行日志记录。

            针对 caf 的评论。我发现在编译时选择目标目录非常有用。使用 $PREFIX 还可以轻松地将开发构建与发货分开。 大多数使用 /usr/progname、/usr/lib/progname 和 /etc/progname

            【讨论】:

            • 真的是$PREFIX/lib/program/,其中PREFIX 可能是/usr/usr/local/opt 甚至/home/foo
            • 如果整个应用程序都安装在 /opt 中,我只会将 /opt 用于库文件。我使用 $HOME/.program/ 进行用户特定的配置。类似于 ssh 如何使用 $HOME/.ssh
            • 抱歉,我不是很清楚 - 通常 PREFIX 会在构建时设置,所以是的,整个应用程序将安装在它下面的不同位置,例如 $PREFIX/bin/$PREFIX/share/doc/ .
            • +1,我一直在寻找这样的指南!
            猜你喜欢
            • 2018-04-21
            • 2018-02-23
            • 2012-10-04
            • 2019-07-01
            • 1970-01-01
            • 2016-05-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多