2016-09-21 30 views
1

我在項目中使用.a文件,當我使用項目中的源文件和.a文件生成.so文件,我發現生成的.so文件比.a文件小,爲什麼.so文件總是小於.a文件?(源代碼相同。)

這是什麼原因?

+0

具體的編譯器? GCC? –

+0

你指的是哪個'.a'文件?爲'.so'生成的存根或爲相同源代碼生成的靜態庫? –

+0

.a和.so文件都包含代碼。只有當.so文件比.a文件大*時,纔會考慮恐慌,那麼您必須弄清楚額外代碼的來源。 –

回答

3

鏈接階段(生成共享對象文件)將刪除未使用的函數等並執行其他壓縮。

編譯階段(生成.a)不會。

+0

我不確定完全解釋它。 –

+0

非常感謝你! –

相關問題