• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/leo881205/article/details/80141735

本文主要介绍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人参与评论

请发表评论

全部评论

专题导读
上一篇:
Inside Go+ 之一: 宏观架构篇发布时间:2022-07-10
下一篇:
Supervisor部署gogin服务或在Linux下面独立部署发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap