在使用lib時,代碼都被鏈接到exe中去了嗎?
01-04
有個靜態庫demo.lib,其中有兩個類A和B。
而我的程序使用了demo.lib這個靜態庫,但我只使用了其中的類A,沒有使用類B(類A和類B沒有依賴關係)。這樣的情況,exe在鏈接生成文件時,類B的代碼是否都被一起鏈接進去了(增加了文件體積)?
如果是編譯成release,最後exe出來之後會全文優化,沒用的代碼全部都刪掉了。release做了這麼多事情,所以編譯的時候才花了這麼多時間。但是如果你用debug,就直接變大。
有編譯選項可以選擇把一個函數作為一個section的,鏈接的時沒用的函數就不用鏈接進來了。gcc底下用--gc-section和-ffunction-sections,win下應該也有類似的選項。就醬。
有一個選項可以選擇去掉沒有用到的函數代碼。msdn 函數級別鏈接。
不是不可能,是絕對不會。房子絕不會在漲價中去庫存
推薦閱讀:
※學習C++,應該循序漸進的看哪些書?
※和團隊做物理引擎,做到商業程度還需要什麼?
※編程時IDE里的Intellisence好像是個編譯器前端一樣,什麼都知道.這是怎麼實現的?
※程序員怎樣避免高強度的工作?
※【C語言】關於C裡面數組批量初始化?
TAG:CC |