我是靠谱客的博主 大气大炮,最近开发中收集的这篇文章主要介绍go语言静态库的编译和使用方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

>echo %GOPATH%
E:sharegitgo_practice

>echo %GOROOT%
C:Go

>tree /F %GOPATH%src
卷 work 的文件夹 PATH 列表
卷序列号为 0009-D8C8
E:SHAREGITGO_PRACTICESRC
│ 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%srcpkgwindows_amd64目录)。

2 编译main.go

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

>go tool compile -I E:sharegitgo_practicepkgwindows_amd64 main.go

-I选项指定了demo包的安装路径,供main.go导入使用,即E:sharegitgo_practicepkgwin
dows_amd64目录,编译成功后会生成相应的目标文件main.o。

3 链接main.o

>go tool link -o main.exe -L E:sharegitgo_practicepkgwindows_amd64 main.o

-L选项指定了静态库demo.a的路径,即E:sharegitgo_practicepkgwin
dows_amd64目录,链接成功后会生成相应的可执行文件main.exe。

4 运行main.exe

>main.exe
call demo ...

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

>go tool compile -I E:sharegitgo_practicepkgwindows_amd64 main.go

>go tool link -o main.exe -L E:sharegitgo_practicepkgwindows_amd64 main.o

>main.exe
call demo ...

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

>go tool compile -I E:sharegitgo_practicepkgwindows_amd64 main.go
main.go:3: can't find import: "demo"

以上就是go语言静态库的编译和使用方法,下次介绍动态库的编译和使用方法。

总结

到此这篇关于go语言静态库的编译和使用方法的文章就介绍到这了,更多相关go语言静态库内容请搜索靠谱客以前的文章或继续浏览下面的相关文章希望大家以后多多支持靠谱客!

最后

以上就是大气大炮为你收集整理的go语言静态库的编译和使用方法的全部内容,希望文章能够帮你解决go语言静态库的编译和使用方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(127)

评论列表共有 0 条评论

立即
投稿
返回
顶部