-2
我理解僅頭標庫,動態鏈接庫(意味着共享對象的.so
文件)和靜態庫(.a
,如檔案文件)之間的區別。Boost庫類型
無論如何,我不完全理解的是:爲什麼有Boost庫必須預編譯並動態鏈接(.so
文件)以及只能與其頭文件一起使用的庫?什麼是需要動態鏈接的原因?請儘可能具體和詳細。 :)
問候, 索爾特
我理解僅頭標庫,動態鏈接庫(意味着共享對象的.so
文件)和靜態庫(.a
,如檔案文件)之間的區別。Boost庫類型
無論如何,我不完全理解的是:爲什麼有Boost庫必須預編譯並動態鏈接(.so
文件)以及只能與其頭文件一起使用的庫?什麼是需要動態鏈接的原因?請儘可能具體和詳細。 :)
問候, 索爾特
在很大程度上,這是一個優化。這裏有一些原因,你就會把至少部分的資料庫的代碼放到一個單獨建庫文件(如共享對象),而不是隻用頭:
dlopen()
,因此需要編譯代碼而不是頭文件(許多FFI無法讀取)。
據我所知,使用_any_預編譯的庫沒有它的頭文件是不可能的。 '.a'靜態庫也是如此。您可以使用動態庫來減少(有時極大地)可執行文件的大小,因爲這些庫是獨立分發的,並且可以在客戶端的計算機上安裝_already_。所以,你只發布你的程序,但用戶必須在必要時自己獲取這些庫。 – ForceBru