2015年4月15日 星期三

libstdc++ 太過龐大的瘦身方法 arm-linux-strip

最近在porting live555 到我們arm的板子上

由於板子只有16MB的空間可供使用(uboot+kernel+squashfs+user_space),可以說空間相當的吃緊

偏偏在作live555 cross-compiler放到板子後,竟然缺少了libstdc++.so.6這個C++的library。



缺了就補給他,於是跑去toolchain中找這個for arm的C++ libray,發現檔案大小竟然是3.7MB


若是這個檔案放上板子,空間就被去掉1/4了 @@"

於是就找了一些瘦身的方法,找到一個不錯的指令 "arm-linux-strip"

其作用是: 去掉elf可執行文件的資訊,使可執行文件變小


其實也是標準編譯時就可以加入的指令,使用之後發現還真不錯用 3.7MB變成----> 600KB左右

真是解決了我的心頭大患,不過如果編譯過程已經有加入這指令,你再執行一次大小是不會改變的

另外有看到一個滿厲害的東西 "用C++寫code 不用用到C++ lib去編譯" 可以參考這篇作者寫的

http://ptspts.blogspot.tw/2010/12/how-to-write-c-program-without-libstdc.html


不過要這樣做,在寫code的過程中,會有一些header檔不能include的限制~

沒有留言:

張貼留言