Go中的共享库?

jld*_*ont 26 shared-libraries go

是否可以使用Go创建共享库(.so)?

更新:为它创建了一个" 问题 ".

Rez*_*eza 26

现在可以使用-linksharedflag

您需要做的是首先运行此命令:

go install -buildmode=shared -linkshared  std
Run Code Online (Sandbox Code Playgroud)

(上面的代码使所有常见的包可共享!)然后

go install  -buildmode=shared -linkshared userownpackage
Run Code Online (Sandbox Code Playgroud)

最后在编译代码时需要运行:

go build -linkshared yourprogram
Run Code Online (Sandbox Code Playgroud)

以上是什么现在它而不是静态链接一切只动态链接它们,你将最终得到更小的编译文件.只是为了给你一个想法,我的"hello.go"文件与静态链接是2.3MB,而使用动态链接的相同代码只有12KB!

  • 这就是我要找的东西.但是在我的mac上给darwin/amd64`不支持`-buildmode = shared. (5认同)

moz*_*zey 7

Go Execution ModesBuilding Go Packages描述为共享库:

"在这种模式下,Go包或一组包可以构建为共享库.导入一个或多个Go包的Go程序可以链接到这个共享库.共享库可以在时间之间更改Go程序是链接的,它运行的时间;程序启动时可用的共享库是将要使用的共享库...

在Go 1.5版本中,这仅针对linux-amd64目标实现.使用gccgo时,它是针对任何支持的目标实现的."


Rap*_*tor 6

现在可能!我使用Go构建了一个.so文件,然后很容易导入到python中!这是我喜欢的文章:http://www.darkcoding.net/software/building-shared-libraries-in-go-part-1/


Sam*_* II 5

显然,现在有可能,但仅限于非常精确的情况。更准确地说,如果您正在为 Android 平台编写代码。

GitHub 上的“goandroid”项目提供了一组补丁,允许 Go 构建特定于 Android NDK 的共享库。见https://github.com/eliasnaur/goandroid