2009-09-24 79 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