Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shared libraries Go中的共享库?_Shared Libraries_Go - Fatal编程技术网

Shared libraries Go中的共享库?

Shared libraries Go中的共享库?,shared-libraries,go,Shared Libraries,Go,是否可以使用Go创建共享库(.so) 更新了:为它创建了一个“”。显然,现在这是可能的,但只有在非常精确的情况下。更准确地说,如果你是为Android平台写作的话 GitHub上的“goandroid”项目提供了一组补丁,允许Go为Android NDK的特定用途构建一个共享库。请参见描述了如何将Go包构建为共享库: “在此模式下,一个Go包或一组包可以构建为共享库。导入一个或多个Go包的Go程序可以链接到此共享库。共享库可在Go程序链接和运行之间更改;程序启动时可用的共享库将被使用 在Go 1

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


更新了:为它创建了一个“”。

显然,现在这是可能的,但只有在非常精确的情况下。更准确地说,如果你是为Android平台写作的话

GitHub上的“goandroid”项目提供了一组补丁,允许Go为Android NDK的特定用途构建一个共享库。请参见描述了如何将Go包构建为共享库

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


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

现在可以使用
-linkshared
标志

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

go install -buildmode=shared -linkshared  std
(以上代码使所有通用软件包都可以共享!) 然后

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

go build -linkshared yourprogram

以上这些都是现在它,而不是静态链接一切,只是动态链接他们,你会得到更小的编译文件“使用静态链接的文件是2.3MB,而使用动态链接的相同代码只有12KB

现在可能了!我使用Go构建了一个.so文件,然后很容易地将其导入python!以下是我喜欢的一篇文章:

截至目前(2013年7月),它是Go工具的一个扩展,而不是内置在Google提供的Go工具中。@Nate你能链接到该扩展吗?(单机版)扩展是只能在android上使用,还是也可以在桌面上使用?@mihaistancu我想交叉编译android版不会太难,请参阅。考虑到golang 1.5支持iOS,可能很快就会得到官方支持。@Nate——我的问题是:“这个扩展只在android上工作,还是我(目前)可以将桌面go软件包编译为共享对象?”@Nate所以我根本不想为android编译。我只想为桌面编译共享对象。我自己也研究过这个问题,显然有一些编译器支持
go build-shared
标志。我回到这个问题上也是为了写一个更新+这就是我要找的。但是在我的mac电脑上,darwin/amd64不支持gives
-buildmode=shared。我能够如此完美地创建一个。但是如何将我的程序方法融入其中。那么?另外,我的程序名是sample.go,它的包也是同名的,它创建了一个名为libcommand-line-arguments.soi的.so文件,如果您希望支持动态加载(如果您在库中进行了更改,因此更改了.so文件,但您希望使用此库的主代码自动使用较新版本,而无需重新编译主代码),Go插件可能更好。
go build -linkshared yourprogram