golang生成静态文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang生成静态文件相关的知识,希望对你有一定的参考价值。

a文件是go install 产生的,目前无法反编译获得源码,就算获得难度也是极大
将a文件对外发布出去,其他人便可正常像引用官方包一样引用它
如:我们写了一个包,将其a文件交给客户,不将源码交给客户,客户便可像正常引用go官方包一样正常引用第三方包
 
将要发布的闭源包.a文件放到 $GOROOT/pkg/linx_amd/ 目录中.
再将发布包的源码保留只有包声明的源文件放到 $GOROOT/src/say/ 目录中.
 
操作如下:
*发布方*
例如有say包要发布:
1,
$cd $GOPATH/src/say
$cat say.go
// say something package
package say
import "fmt"
// private function
func say(){
fmt.Println("hello....world")
}
 
首先在say.go文件同级目录下编译生成say包的.a文件(如果要发布到多种系统架构,需要修改编译参数交叉编译出多种发布文件)
$go install
$ls $GOPATH/pkg/linux_amd/say.a(say.a文件会自动生成在$GOPATH/pkg/linux_amd中)
 
2,
其次修改发布包对应的源文件
最简单的修改方式
$:echo ‘package say‘ > say.go
 
3,
最后发布方提供两份文件:
编译生成say包的.a文件和修改之后的源文件
say.a
say.go
 
*使用方*
 
1,复制say.a文件到$GOROOT/pkg/linux_amd/目录中
 
2,复制say.go文件到$GOROOT/src/say/目录中
 
然后就可以在自己的代码中像使用官方标准库一样使用第三方闭源包了.
 

以上是关于golang生成静态文件的主要内容,如果未能解决你的问题,请参考以下文章

golang golang构建简单的服务器,和静态文件

Golang实践录:静态资源文件整合:初步使用

golang Go中的简单静态文件服务器

Golang 的静态编译

golang `application / wasm` MIME类型感知静态文件服务器

Golang实践录:静态资源文件整合:web服务