美文网首页Golanggolang深入浅出golang
go语言静态库的编译和使用

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

作者: songleo | 来源:发表于2018-04-29 10:57 被阅读92次

本文主要介绍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语言静态库的编译和使用方法,以windows平台为例,linux平台步骤一样,具体环境如下: 在%...

  • 用go语言给python3开发模块

    实现方法概述 因为go语言可以生成gcc可用的静态库,我们可以用go语言实现我们需要的功能,然后编译成静态库,再用...

  • Go语言特点

    Go 语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发维护的高效率 ,使用一个表达式来形容 Go ...

  • Golang的入门教程(一)

    Go语言特性 Go语言是Google公司开发的一种静态的,编译型并自带垃圾回收和并发的变成语言.Go语言的风格类似...

  • Go导出的库给VS使用

    说明:go在windows下可以导出静态库和动态库,静态库是.a文件是不能给vs使用的,也没法转成vs使用的静态库...

  • Go 语言程序设计(1)

    记录点: Go 语言是一门静态编译型语言,保证了其强大的性能 Go 语言提供了一个官方的本地文档,只需要使用 go...

  • Go语言简介

    一、什么是Go语言? Go是一门开源、并发支持、具有垃圾回收机制、编译性系统编程语言,在静态编译语言的高性能和...

  • golang学习(1):go的安装和工作空间

    1 go语言特点:原生支持高并发,带垃圾回收,快速编译静态编译型语言 2 go安装: 2.1go的几种安装方式 2...

  • go编程基础视频笔记-Go 开发环境搭建

    什么是Go Go是一门并发支持、垃圾回收的编译型系统编程语言;旨在创造一门具有静态编译语言的高性能和动态语言的高效...

  • Go入门1:Golang介绍

    Go语言 Go语言是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。为了方便搜索和...

网友评论

    本文标题:go语言静态库的编译和使用

    本文链接:https://www.haomeiwen.com/subject/iveolftx.html