go struct 静态函数_golang使用静态文件(.a文件)进行编译

本文介绍了如何在Go项目中使用静态文件编译和链接非开源第三方库,生成可执行的exe程序。通过golang的工具chain,包括`go tool compile`和`go tool link`,结合.a静态库文件,可以创建不依赖源码的可执行文件。同时,提到了使用声明文件辅助开发以及github上的exporthead项目用于导出gopackage声明。
摘要由CSDN通过智能技术生成

程序的一般过程:编辑、编译、链接、运行。由于golang的一个项目源码都是开源的,我们很少去关心编译、链接的问题。如果在一个项目中使用了非开源的第三方库,此时怎么打包出来一个可执行的exe程序?

golang使用静态文件编译

使用go tool compile

golang使用静态文件链接

使用go tool link

//staticpkg/print.go

package staticpkg

import "fmt"

func Hello() {

fmt.Println("hello")

}

//运行 go install 会生成对应的.a文件

//修改print.go文件,去掉函数实现,

//main/main.go

package main

import (

"staticpkg"

)

func main() {

staticpkg.Hello()

}

//使用tool的compile命令编译当前项目

go tool compile -I $GOPATH/windows_amd64 main.go

//会生成一个main.o文件

//使用tool的link命令生成可执行文件

go tool link -o main.exe -L $GOPATH/windows_amd64 main.go

//会生成一个main.exe程序,直接运行会输出hello

//如果直接go run main.go此时没有任何输出

使用静态文件(.a文件)进行编译和链接时,只需要有对应的.a文件即可。但是.a文件是无法查看到对应包中的一些定义的,如果要使用.a文件进行开发,还需要一份对应的声明文件。

https://github.com/golangaccount/exporthead是一个简单的导出go package声明的项目,里面移除了函数的实现细节和type或interface中的非导出item

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值