0
我已經在visual studio中創建了windows應用程序項目。 OpenSSL庫(大小:15Mb)與應用程序項目靜態鏈接。爲什麼可執行文件比與應用程序項目靜態鏈接的庫小?
但是,應用程序(可執行文件).exe文件的大小隻有〜2 MB。
這怎麼可能? 任何人都可以解釋我如何鏈接器做到這一點?
我已經在visual studio中創建了windows應用程序項目。 OpenSSL庫(大小:15Mb)與應用程序項目靜態鏈接。爲什麼可執行文件比與應用程序項目靜態鏈接的庫小?
但是,應用程序(可執行文件).exe文件的大小隻有〜2 MB。
這怎麼可能? 任何人都可以解釋我如何鏈接器做到這一點?
在鏈接期間,鏈接器將只從您的應用程序需要的OpenSSL庫中選取代碼。它不會包含整個OpenSSL庫。因此,您的可執行文件可能比庫更小。
基本上,靜態庫只是一個對象文件的容器。每個目標文件都包含單個編譯單元的代碼。
*每個目標文件都包含單個函數的代碼*嚴格來說,並非如此,通常每個目標文件都是編譯單個翻譯單元(即.c/.cpp文件)的結果。 –
這就是靜態庫如何在我知道的任何平臺上工作... –
@MatteoItalia:感謝您指出*每個對象中的錯誤... *。我相應地更新了我的答案。 – Codo