在乙個原始檔中,裡面有很多函式,但是main函式沒有全部呼叫,未使用的函式也會被編譯,也會被「打包」到最後的可執行檔案中,要去除掉不要的函式,方法如下:
1.執行gcc -function-sections 。其中-function-sections的意思是,將不同函式編譯到不同的section上面。如果沒有這個選項,所有的函式都會編譯到乙個section上面,於是函式就不能被「剝離」
2.執行ld --gc-sections 。表示把不要的函式section去掉。
GCC 編譯使用動態鏈結庫
動態鏈結庫 1.建立動態鏈結庫 複製 如下 include void hello 用命令gcc shared hello.c o libhello.so編譯為動態庫。可以看到,當前目錄下多了乙個檔案libhello.so。2.再編輯乙個測試檔案test.c,內容如下 複製 如下 include in...
gcc使用 動態庫鏈結靜態庫
最近自己的專案中遇到乙個問題 編譯乙個動態庫,動態庫中使用了靜態庫的函式如下圖所述 問題來了怎麼編譯最終得到乙個帶有靜態鏈結的動態庫lib so?生成靜態庫lib 1 gcc o 1.o c 1.c ar r 1.o lib 1.a 生成靜態庫lib 2 gcc o 2.o c 2.c ar r 2...
使用gcc鏈結std的介面出錯
連線的時候提示,undefined reference to std 1 basic string 或者undefined reference to std cxx11 basic string,總之就是std的一部分變數可能可用,但大部分api無法使用 多半是因為沒有使用g 進行連線,gcc和g ...