go语言静态库的编译和使用

go语言静态库的编译和使用
本文主要介绍go语言静态库的编译和使用方法,以windows平台为例,linux平台步骤一样,具体环境如下:

echo %GOPATH%
E:\share\git\go_practice\

echo %GOROOT%
C:\Go\

tree /F %GOPATH%\src
卷 work 的文件夹 PATH 列表
卷序列号为 0009-D8C8
E:\SHARE\GIT\GO_PRACTICE\SRC
│ main.go

└─demo
demo.go
复制
在%GOPATH%\src目录,有demo包和使用demo包的应用程序main.go,main.go代码如下:

package main

import "demo"

func main() {
    demo.Demo()
}

demo包中的demo.go代码如下:

package demo

import "fmt"

func Demo() {
    fmt.Println("call demo ...")
}

由于demo.go是%GOPATH%\src目录下的一个包,main.go在import该包后,可以直接使用,运行main.go:

go run main.go
call demo …
复制
现在,需要将demo.go编译成静态库demo.a,不提供demo.go的源代码,让main.go也能正常编译运行,详细步骤如下:

1 编译静态库demo.a

go install demo

在命令行运行go install demo命令,会在%GOPATH%目录下生相应的静态库文件demo.a(windows平台一般在%GOPATH%\src\pkg\windows_amd64目录)。

2 编译main.go
进入main.go所在目录,编译main.go:

go tool compile -I E:\share\git\go_practice\pkg\windows_amd64 main.go
复制
-I选项指定了demo包的安装路径,供main.go导入使用,即E:\share\git\go_practice\pkg\win dows_amd64目录,编译成功后会生成相应的目标文件main.o。

3 链接main.o

go tool link -o main.exe -L E:\share\git\go_practice\pkg\windows_amd64 main.o
复制
-L选项指定了静态库demo.a的路径,即E:\share\git\go_practice\pkg\win dows_amd64目录,链接成功后会生成相应的可执行文件main.exe。

4 运行main.exe

main.exe
call demo …
复制
现在,就算把demo目录删除,再次编译链接main.go,也能正确生成main.exe:

go tool compile -I E:\share\git\go_practice\pkg\windows_amd64 main.go

go tool link -o main.exe -L E:\share\git\go_practice\pkg\windows_amd64 main.o

main.exe
call demo …
复制
但是,如果删除了静态库demo.a,就不能编译main.go,如下:

go tool compile -I E:\share\git\go_practice\pkg\windows_amd64 main.go
main.go:3: can’t find import: “demo”
复制
以上就是go语言静态库的编译和使用方法,下次介绍动态库的编译和使用方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值