• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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语言静态库的编译和使用方法,下次介绍动态库的编译和使用方法。

    总结

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

    您可能感兴趣的文章:
    • Go语言非main包编译为静态库并使用的示例代码
    上一篇:基于Go和PHP语言实现爬楼梯算法的思路详解
    下一篇:Go编译32位GNU静态链接库的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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