2010-03-01 73 views
24

什麼是devel包像 「libgtk + -devel」 或 「的python-devel的」 等實用工具?他們是否包含圖書館的來源?它與libgtk +等非devel軟件包有什麼不同?什麼是* -devel包?

+0

不值得打開另一個答案,但除了現有的答案,我要強調的是,包裝商試圖把在非-devel包,如'libgtk +'所需的佔地面積最小運行(而不是「發展」) gtk +程序。這意味着只有動態庫和配置文件。其他一切都在補充的'-devel'包中。 – 2010-03-02 04:33:31

+0

謝謝大家。 – Variance 2010-03-02 17:25:06

回答

41

*-devel軟件包(通常在基於Debian的發行版中稱爲*-dev)通常是針對給定庫編譯代碼所需的所有文件。

對於運行使用庫libfoo僅actualy共享庫文件的應用程序(*.so.*,例如libfoo.so.1.0)需要(加上可能的一些數據文件和一些特定於版本的符號鏈接)。

當你真正想編譯使用該庫則需要在頭文件(*.h,例如foo.h),描述應用程序的接口,以及一個版本少的符號鏈接到共享庫中的C應用程序(*.so,例如libfoo.so - >libfoo.so.1.0)。這些通常捆綁在*-devel包中。

有時*-devel包還包括萬一庫靜態編譯版本(*.a,例如libfoo.a)你想建立一個不依賴於動態庫都完整的獨立的應用程序。其他語言(如Java,Python,...)使用不同的方式記錄庫的API(有效地在實際庫中包含所有必要的信息),因此通常不需要單獨的*-devel程序包(除了可能用於文檔和其他工具)。

+1

差不多。 '.so'文件位於-devel包中;正常的共享庫是由'.so。*'進行的,因爲它包含一個SONAME。 '.so'文件被鏈接器使用,'.so。*'庫在運行時使用。 – 2010-03-02 04:48:59

+0

謝謝,我在文中加入了更正。 – 2010-03-02 07:03:37

6

它們通常包含必要的頭文件和庫。例如,Python-devel的提供,如果您想嵌入在自己的應用程序的Python解釋器,你需要Python的頭文件和庫。還包括一些額外的工具和文檔(例如開發人員手冊或代碼示例)。