2011-11-11 68 views
2

我在fedora 16上使用gcc學習C語言。我有幾個關於庫的問題。 (操作系統和編譯器外)庫是操作系統特定的還是編譯器特定的?

  1. 第三方庫OS特定的或編譯器特定的或編程語言特定的?

  2. 是否有通用的程序來安裝/添加庫到編譯器?

  3. 什麼樣的庫包含?原始的源代碼是要編譯還是機器代碼?

在此先感謝

回答

2
  1. 這一切成爲可能。一些是OS [家族]特定的(例如POSIX系統上的unistd.h),一些是編譯器特定的(沒有具體的例子),一些是語言特定的(例如,升壓特定於C++)。雖然在posix系統上它是非常標準化的文件夾結構。

  2. 這取決於「庫」的定義。有隻有頭文件的庫,可以通過將源文件集成到構建過程中來使用庫(例如,sqlite帶有一個源文件,稱爲「合併」),有些庫以二進制形式存在。還有在運行時加載的庫(POSIX上的共享對象,Windows上的動態鏈接庫)。

靜態庫可能包含二進制代碼(這不一定是可執行的,按原樣碼),通常可用的功能/課,告訴在哪裏可以找到哪些在圖書館的索引。

動態庫通常包含與位置無關的代碼,它除了具有內部相對地址外,還可執行。

天空是極限。

相關問題