Go中的共享库?

时间:2009-11-18 16:08:47

标签: shared-libraries go

是否可以使用Go?

创建共享库(.so)

更新:为其创建了“issue”。

4 个答案:

答案 0 :(得分:24)

现在可以使用-linkshared标志

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

go install -buildmode=shared -linkshared  std

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

go install  -buildmode=shared -linkshared userownpackage

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

go build -linkshared yourprogram

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

答案 1 :(得分:7)

Go Execution Modes描述将Go包构建为共享库

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

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

答案 2 :(得分:6)

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

答案 3 :(得分:4)

显然,现在有可能,但只有在非常精确的情况下。更确切地说,如果您正在为Android平台撰写文章。

GitHub上的“goandroid”项目提供了一组补丁,允许Go构建一个共享库,以便与Android NDK一起使用。见https://github.com/eliasnaur/goandroid