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/目录中
然后就可以在自己的代码中像使用官方标准库一样使用第三方闭源包了.
时间: 2024-10-22 14:11:28