2
我在fedora 16上使用gcc學習C語言。我有幾個關於庫的問題。 (操作系統和編譯器外)庫是操作系統特定的還是編譯器特定的?
第三方庫OS特定的或編譯器特定的或編程語言特定的?
是否有通用的程序來安裝/添加庫到編譯器?
什麼樣的庫包含?原始的源代碼是要編譯還是機器代碼?
在此先感謝
我在fedora 16上使用gcc學習C語言。我有幾個關於庫的問題。 (操作系統和編譯器外)庫是操作系統特定的還是編譯器特定的?
第三方庫OS特定的或編譯器特定的或編程語言特定的?
是否有通用的程序來安裝/添加庫到編譯器?
什麼樣的庫包含?原始的源代碼是要編譯還是機器代碼?
在此先感謝
這一切成爲可能。一些是OS [家族]特定的(例如POSIX系統上的unistd.h
),一些是編譯器特定的(沒有具體的例子),一些是語言特定的(例如,升壓特定於C++)。雖然在posix系統上它是非常標準化的文件夾結構。
這取決於「庫」的定義。有隻有頭文件的庫,可以通過將源文件集成到構建過程中來使用庫(例如,sqlite帶有一個源文件,稱爲「合併」),有些庫以二進制形式存在。還有在運行時加載的庫(POSIX上的共享對象,Windows上的動態鏈接庫)。
靜態庫可能包含二進制代碼(這不一定是可執行的,按原樣碼),通常可用的功能/課,告訴在哪裏可以找到哪些在圖書館的索引。
動態庫通常包含與位置無關的代碼,它除了具有內部相對地址外,還可執行。
天空是極限。