如何減小編譯後可執行檔案的大小
CFLAGS += -ffunction-sections -fdata-sections
LDFLAGS += -Wl,-Map=object.map,--cref,--gc-section
if found overlap error, add one line in Link script:
.text{
*(.text.*)
}
通過增加CFLAGS選項,使得各個函式放到單獨的section內,在連結的時候會自動去掉沒有使用的函式。從而達到減小可執行檔案大小的目的。
-Wl,-Map=object.map:輸出一個可執行檔案的map檔案,可以檢視各個函式所在的記憶體地址。
注意:使用該選項後,全域性變數不會自動設為0。
相關推薦
如何減小編譯後可執行檔案的大小
CFLAGS += -ffunction-sections -fdata-sections LDFLAGS += -Wl,-Map=object.map,--cref,--gc-section if found overlap error, add one line in
iOS 開發ipa包瘦身 -- 可執行檔案大小
專案寫完以後打出來的包太大 分析一下 首先開啟Products下有個.app 檔案 右鍵show in finder後 再次右鍵 顯示包內容 專案打包後的檔案就會一一羅列在這裡。 這裡重點看一下 這裡有個黑色的可執行檔案,在我專案裡一開始竟然達到了50M+ 那麼這個檔
[PYTHON]_ELVE_Python原始碼檔案編譯成可執行檔案(支援macOS High Sierra和window 10)
#0x01 背景 這兩天寫了一個抽獎的Python指令碼,要生成可執行檔案,總不能一直在sublime上執行吧,或者執行前先安裝Python,所以就查了一下怎麼生成可執行檔案,本篇包括mac下和win下,經本人測試,mac下生成.app(mac下的可執行檔案為.app字尾)較win下容易一些。 我用的Py
從編譯到可執行檔案
我們的平時寫的程式碼是經過怎樣的過成變成讓計算機可執行的檔案。下面我給出了一個大致的流程: 原始碼經過預編譯,編譯,彙編,連結過程到可執行的exe檔案。 其實我們的程式碼就產生了兩種東西,一種是資料一種是指令。 資料和指令可定不能雜亂的放在一起,系統會將我們的資料和
Python:用Python程式呼叫C/C++編譯的可執行檔案
[TODO] 用python程式呼叫C/C++編譯的可執行檔案 ************************華麗的分割線************************ step1:cppexec.cpp #include <iostream> int ad
關於python使用pyrex編譯成可執行檔案的問題
轉自我在百度的blog: http://hi.baidu.com/python23/ 這個問題是相當有意義的,如果有了比較好的方法,python完全可以用來開發商業軟體,而不用擔心原始碼洩露。 前兩天我在網上看了看,有很多的人在問這個問題。大部分的人都在
使用ndk-build編譯android可執行檔案
target.c #include <stdio.h> int count = 0; void sevenWeapons(int number) { char* str = "Hello,11111111!"; printf("%s %d\n
Linux中將c檔案編譯成可執行檔案的方法
c檔案:project.c 方法一 //預編譯,生成已編譯通過的C原始程式 *.i gcc -E project.c -o project.i //編譯,生成組合語言原始程式 *.s gcc -S project.i -o project.s //連結,生成可執行程
用makefile編譯生成.a檔案(linux靜態庫),並編譯進可執行檔案中
檔案列表: 程式碼檔案 /* 下列程式碼儲存到 plus.cpp */ int my_plus(int x,int y) { return x + y; }
四、Android.mk之編譯生成可執行檔案
一、簡介 對於學過Linux核心的來說,想要去編譯一個檔案,生成可執行檔案也好,打包成庫也罷,都是使用Makefile來管理編譯的。那麼對於Android底層開發來講,也是需要把咱們寫的程式碼,編譯成可執行檔案或者其他可用的檔案,才能使用起來。再Android對這些檔案的管
在Windows平臺用visual studio編譯的可執行檔案部署時報:應用程式無法正常啟動0xc000007b(跟DirectX9無關的原因)
最近在做EasyDarwin開源流媒體伺服器Windows版本編譯與部署時發現一個問題,在開發機本機執行都很正常,但是部署到目標機器(未安裝vs等開發環境)時,莫名其妙報出了“應用程式無法正常啟動0xc000007b”的錯誤,網上搜了一遍,大多數解決方案和部落格
c/c++中將git當前版本資訊編譯到可執行檔案中
使用簡單Makefile,則可直接新增巨集定義: CPPFLAGS+=-DGIT_SHA1="$(shell git log --format='[sha1]:%h [author]:%cn [time]:%ci [commit]:%s [branch]:%d' -1)"
C/C++程式減小可執行檔案的大小
[Under the hood]---Matt Pietrek October 1996 MSJ Matt Pietrek October 1996 MSJ Matt Pietrek is the author of Windows 95 System Program
'假定以下程式經編譯和連線後生成可執行檔案PROG.EXE,如果在此可執行檔案所在目錄的DOS提示符下鍵入:PROG ABCDEFGH IJKL<回車>,則輸出結果為( ). void main( int argc, char *argv[]) { while(--argc>
main(int argc,char *argv[])函式的兩個形參,第一個int argc,是記錄你輸入在命令列(你題目中說的操作就是命令列輸入)上的字串個數;第二個*argv[]是個指標陣列,存放輸入在命令列上的命令(字串)。當命令列輸入PROG ABCDEFGH IJKL時,記錄了3
python如何呼叫編譯後的可執行檔案
本人計算機萌新一枚,從今天開始寫點平時遇到的問題,可能只是一個解決辦法或者一些小小的感悟。或許研究得沒那麼深入,但也希望能夠分享一些自己的經驗。可能格式或者某些說法有些錯誤,望指正,謝謝。 前情提要 在工作的時候,對方發了一個寫好並且編譯好的包,lin
Xcode編譯完後,在Finder中檢視可執行檔案路徑和沙盒路徑
截圖技巧:Mac自帶截圖快捷鍵Shift + Command + 3,按下這個組合鍵,圖片自動儲存到桌面。 選擇Xcode的Preferences選單 開啟後選擇“Locations”選項 開啟後的Finder 進入《DerivedData》目錄就可以找到你的工程,可
經驗總結---編譯出可以在Android上執行的可執行檔案
作為一手包攬Ubuntu和Android裝置的初級開發者,我不止一次地嘗試把這兩個同是用Linux核心的作業系統統一起來——讓Ubuntu下的可執行程式能夠在Android裝置上執行。於是我不止一次地嘗試,不止一次地查詢資料,終於如願以償。 我把我的經驗在這裡與大家分享。 準備工具 【宿
Makefile 編譯生成多個可執行檔案
all:server client server:server.c gcc $< -o [email protected] client:client.c gcc $< -o [email protected] clean: &nb
VS2010靜態編譯生成.exe可執行檔案
VS2010靜態編譯生成的.exe可執行檔案,可以免安裝在其他電腦直接執行 靜態編譯:就是在編譯可執行檔案的時候,將可執行檔案需要呼叫的對應動態連結庫(.so)中的部分提取出來,連結到可執行檔案中去,使可執行檔案在執行的時候不依賴動態連結庫。 編譯方式: 第1種:
>pyinstaller -F -w -i D:\tmp\main.ico D:\python_test.py -F 表示生成單個可執行檔案,執行後dist目錄中出現了python_test.exe
pyinstaller -F -w -i D:\tmp\main.ico D:\python_test.py -F 表示生成單個可執行檔案,執行後dist目錄中出現了python_test.exe檔案,沒有任何依賴庫,執行它即可。 -w 表示去掉控制檯視窗,這在GUI介面時