Go插件编译约束
约束声明
Go语言对插件约束较多,如Go版本、第三方依赖版本、编译参数等,插件需要与性能测试服务执行器主程序严格一致,否则将出现包括但不限于Go插件编译约束表中描述的异常,请严格按照约定编译so文件。
约束项 |
约束值 |
说明 |
---|---|---|
arch |
linux amd64 |
- |
Go版本 |
1.19.6 |
执行go version查看版本。 |
go.mod |
github.com/go-resty/resty/v2 v2.7.0 github.com/shopspring/decimal v1.3.1 github.com/xuri/excelize/v2 v2.6.0 github.com/tidwall/gjson v1.14.4 github.com/valyala/fasthttp v1.43.0 go.uber.org/atomic v1.10.0 golang.org/x/net v0.8.0 golang.org/x/time v0.2.0 |
如果直接或者间接使用了第三方库,需要在go.mod文件中使用约束值提供的版本。 第三方版本不一致将产生如下异常: plugin was built with a different version of package github.com/json-iterator/go |
TrimPath |
使用TrimPath |
如果不使用将产生如下异常: plugin was built with a different version of package internal/unsafeheader 使用linux命令strip移除符号及调试信息。 |
编译样例
go build -buildmode=plugin -trimpath -o random.so random.go strip random.so