2 回答

TA貢獻(xiàn)1906條經(jīng)驗 獲得超3個贊
這是因為您使用的是 CGO,Go 創(chuàng)建了一個用于編譯 C 代碼的 tmp 目錄,并且該路徑嵌入到二進(jìn)制文件中。

TA貢獻(xiàn)1877條經(jīng)驗 獲得超1個贊
1-這是示例代碼,每次構(gòu)建時都會自行更改(也因為嵌入__DATE__并且__TIME__每次構(gòu)建時都會更改):
package main
/*
#include<stdint.h>
#include<string.h>
void getCompileDateTime(uint8_t dt[12],uint8_t tm[9]){
strcpy(dt, __DATE__); //Mmm dd yyyy
strcpy(tm, __TIME__); //hh:mm:ss
}
*/
import "C"
import (
"fmt"
"unsafe"
)
func main() {
dt := make([]byte, 12)
tm := make([]byte, 10)
C.getCompileDateTime((*C.uint8_t)(unsafe.Pointer(&dt[0])), (*C.uint8_t)(unsafe.Pointer(&tm[0])))
dts, tms := string(dt), string(tm)
fmt.Println(dts, tms)
}
2-
一旦使用 cgo,二進(jìn)制文件將在 DWARF 部分中包含 $WORK 路徑
當(dāng)前問題:
1. cgo 構(gòu)建中的 $WORK 路徑泄漏。
2. -cover 和測試中的 $WORK 路徑泄漏。
參考:https : //github.com/golang/go/issues/9206
3- 多次構(gòu)建純 Go 程序?qū)⑸上嗤亩M(jìn)制文件。
我希望這有幫助。
- 2 回答
- 0 關(guān)注
- 203 瀏覽
添加回答
舉報