gcc91編譯體積太大
㈠ gcc 編譯生成外部調試語法文件
你用的是linux系統吧? binutil包裡面有個objcpy命令:
obj --only-keep-debug [被提取的文件] [提取出來的調試符號文件,建議加.debug後綴]
另外要把調試信息去掉是用strip命令。你可以man下看看。
strip --strip-debug [需要處理的文件]
把debug信息加回去:
obj --add-gnu-debuglink=[debug文件] [需要添加debug信息的文件]
㈡ 為什麼自己編譯的 aria2 體積很大
有兩種情況,在Debug編譯模式下往往同時存在:
1、未打開編譯、鏈接優化,生成冗餘代碼、數據較多。
2、編譯時包含調試信息,最終影響可執行文件體積。
還有第三種情況,受所編譯的項目配置選項影響:
3、使用了體積較大的靜態鏈接庫,有些庫體積幾十甚至幾百兆(通常Debug版),一旦引入很可能大大增加可執行文件尺寸(未開鏈接優化時尤甚)。
㈢ GCC中靜態連接和動態連接的區別
1:靜態連接的時候,靜態庫的所有執行代碼被直接編譯到目標程序中。而動態連接的時候,僅僅把動態庫的函數和變數的符號名,地址偏移量等導入到目標程序。只有在目標程序運行的時候才把動態庫的執行代碼載入到內存中。
2:動態鏈接的項目容易管理,把不同模塊封裝成不同的動態庫,如果模塊功能修改,一般只需要重新生成該動態庫,不用重新編譯其他模塊和目標程序。而靜態鏈接的程序修改任何一個地方都必須重新編譯整個程序
3:靜態鏈接生成的目標程序體積比動態鏈接的大,但是載入速度更快,發布更容易,不需要檢查發布機器上是否有該動態庫或者動態庫版本是否符合要求。
4:如果多個程序使用一個動態庫,則該庫的執行代碼只會在內存中載入一次。而靜態庫是多次載入(事實上靜態庫連接完就沒用了,等於目標程序的一部分)。
5:從調試的角度來說,靜態連接的程序調試方法和獨立程序沒有任何區別,而動態庫的調試相對要復雜一些,因為庫裡面的符號地址都是相對地址。
㈣ C++編譯後的文件為什麼體積特大
正常,在編寫小的短的程序C沒有匯編有優勢,一個程序很簡單的程序用TC編譯成30K正常
你可以這樣理解
編譯 就跟模板似的,有固定的開頭結尾,中間是你的程序編譯的代碼,開頭結尾最簡單也要幾K,所以再加上你的程序不可能很短
你是用的TC 而不是用的VC++ 沒有動態庫與靜態庫的問題,
但是如果改變些TC編譯選項可能對編譯結果大小有影響
㈤ c# winform中編譯後,exe文件體積很大怎麼辦
一般EXE文件很大,說明你有以下幾個事情都放在EXE項目中了:
1、大量的程序圖片以資源的形式簽入到了exe項目中。
2、大量的業務邏輯代碼放到了exe項目中。
3、大量的業務邏輯窗口代碼放到了exe項目中。
解決的辦法:
1、建立多個類庫項目,將主要的代碼放到類庫項目中。
2、為圖片專門創建外部資源文件,或者嵌入到類庫項目中。
3、exe項目盡量不做業務處理,只運行類庫項目中的一些代碼。
這樣就可以大大減少exe的大小,將主要代碼放到了類庫項目生成的dll文件中。
㈥ 為什麼vs2015做MFC,靜態編譯體積這么大
打開項目,選擇屬性,分三步:(1)選擇左上角的configuration->Active(Debug)configurationproperties->general->useofMFC,選擇useMFCinastaticlibrary。(2)左上角configuration->debugC/C++->codegeneration->runtimelibrary->multi-threadeddebug(/MTd)(3)configuration->releaseC/C++->codegeneration->runtimelibrary->multi-threaded(/MT)
㈦ 如何減小gcc靜態生成的程序的體積
把圖象做在新建的MC中,把圖象縮小為25%,然後回到場景中,將MC放大400%(對復雜的圖象效果顯著)
㈧ GCC編譯,怎樣禁止優化某一段語句或者改成匯
實際上在編譯之後還要鏈接,才能生成最終的目標代碼。 在鏈接的過程中,只有用到的函數才會被鏈接進目標代碼。也就是說,沒有用到的函數不會被鏈接到目標代碼,也不會增大目標代碼的體積。
㈨ 如何在Windows下安裝使用gcc編譯器
1、 先去Cygwin網站下載一個安裝文件(setup.exe),這個文件體積很小,只有不到300KB。然後雙擊運行setup.exe。因為是第一次安裝,所以必須選擇從Internet在線安裝,也可以先從Internet下載安裝文件,然後再手動安裝。我選擇後者,因為這樣,以後我可以在不聯網的時候也能安裝。
2、接下來點擊「下一步」,然後從一系列伺服器列表中選擇一個你認為網速最快的一個作為下載伺服器。接著點擊「下一步」就會出現如下圖所示的界面,用來選擇你想安裝的程序。
如果你不做任何修改,將默認安裝Cygwin運行所需的最少的程序和組件。不過,gcc編譯器不在默認安裝程序之列,所以你必須選擇安裝gcc。具體是, 在上述窗口中的列表中展開Devel目錄,找到gcc-g++一項,點擊「Default」,它就變成了「Install」,同時由於程序之間的依賴性 gcc-core條目的「Default」,也變成了「Install」。
此外,為了使gcc能正確編譯源文件,還必須安裝win32api庫,否則會編譯出錯。因此,你需要在上述窗口中展開Libs目錄,找到win32api一項,將它點成「Install」。
3. 接下來就是耐心等待程序去下載所需的安裝文件了。一旦下載完畢,你再次運行setup.exe,先選擇你將要把Cygwin安裝在什麼地方,然後再選擇你 剛才所下載的那些安裝文件所在的硬碟位置。接著你還需要再次選擇安裝gcc和win32api。這樣,你就可以開始安裝了。
4. 安裝完成後,運行Cygwin。在窗口中敲入gcc就可以直接用gcc來編譯了。編譯鏈接生成的可執行文件,系統會自動加上.exe後綴,在Cygwin 環境中可以直接運行。但如果脫離Cygwin環境,而在MS DOS下運行,則會出錯。解決辦法很簡單,那就是將cygwin1.dll文件拷貝到C:\WINDOWS目錄下即可。