過大第一個原因是包含了符号表,這個可以通過strip删除,檔案大小會立即縮水。strip指令提供了不同參數,友善可選擇的删除。
除此之外,兩個編譯參數“-ffunction-sections”和“-fdata-sections”,以及連結參數“-Wl,--gc-sections”可用來删除沒有使用到的符号,“-Wl,”表示後面是傳遞給連結器ld的參數。
objcopy也可用來删除一些未用的資料。
相關的:
-Wl,--version-script=export.lds
__attribute__ ((visibility ("hidden")))
readelf -s
readelf -S
gcc屏蔽“unused warn”,使用“__attribute__((unused))”,如:
static int __attribute__((unused)) my_function();
注意應用在函數聲明,而不是定義處,如果有聲明的話。