給golang程式進行一次廋身

2021-06-22 06:36:52 字數 853 閱讀 6255

golang語言是使用靜態編譯,但是由golang編譯出來的程式確實有點大,我們需要對它進行一次廋身。

作為慣例:我們第乙個程式就是經典的hello world!

// hello project main.go 

package main

import (

"fmt"

)  func main()

使用go build hello.go 生成可執行檔案 hello

使用命令檢視大小ll -h

-rwxrwxr-x 1 root root 2.4m may 28 19:54 hello
居然高大2.4mb。

go語言是靜態編譯,但是這個也太大了吧。

我們提供乙個給程式廋身的方法。

使用命令:go build -ldflags "-s -w" hello.go 重新編譯,再次檢視大小:

-rwxrwxr-x 1 root root 1.3m may 28 19:57 hello
明顯變小了不少。

命令解析:

-s去掉符號表(然後panic時候的stack trace就沒有任何檔名/行號資訊了,這個等價於普通c/c++程式被strip的效果),

-w去掉dwarf除錯資訊,得到的程式就不能用gdb除錯了。

-s和-w也可以分開使用,一般來說如果不打算用gdb除錯,

-w基本沒啥損失。-s的損失就有點大了。

​歡迎關注碼術。

程式只能執行一次

using system using system.collections.generic using system.windows.forms using system.runtime.interopservices using system.diagnostics using system.re...

oracle into 一次給多個變數賦值

建表,插資料 prompt pl sql developer import file prompt created on 2012年5月23日 by administrator set feedback off set define off prompt creating student.creat...

給位元幣做一次體檢

不要指望這是一篇多麼史詩的文章,這裡只是用pvs studio檢查了下位元幣專案的源 並發現了其中一些可疑的片段。我想已經有很多程式設計師已經檢查過位元幣源 了吧,不過既然我們也做了一次檢查,這裡就簡單地說明下。首先我們決定用pvs studio以及clang進行對比測試,這是乙個龐大而複雜的任務,...