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

UPDATED:为它创建了一个"issue".

推荐答案

现在可以使用-linkshared标志来实现这一点

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

go install -buildmode=shared -linkshared  std

(上面的代码使所有公共包都可以共享!) 然后

go install  -buildmode=shared -linkshared userownpackage

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

go build -linkshared yourprogram

以上就是现在的情况,它不是静态链接所有内容,而是动态链接它们,最终得到的编译文件要小得多.让你了解一下,我的带有静电链接的"hello.go"文件有2.3MB,而使用动态链接的相同代码只有12KB!

Go相关问答推荐

为什么使用append时Go切片的初始容量会随着int32和int64类型的不同而变化?

Go在使用HTTP代理时如何处理DNS请求?

在不耗尽资源的情况下处理S3文件下载

如何解决构建Docker Compose时的权限被拒绝问题

如何用mpb创建两行进度条?

如何将 DirName 和 serial 添加到 X509v3 Authority Key Identifier

如何使用 go 包设置标头键和值:shurcooL/graphql 或 hasura/go-graphql-client?

如何使用管理员权限启动 powershell 进程并重定向标准输入 (os.exec)

SSH 代理,数据包长度错误

读取非UTF8编码的文件内容并正确打印出来

Go:从 ssl 证书中获取 'subject/unstructeredName' 的值

获取切片元素的地址是否意味着 Go 中元素的副本?

Golang 构建多平台问题

如何根据 Go 中第二次出现的分隔符拆分字符串?

try 运行 docker-compose up -d 时出现错误

具有相同提前返回语句的函数的不同基准测试结果

golang jwt.MapClaims 获取用户ID

如何使用golang操作很长的字符串以避免内存不足

Grafana/Prometheus 将多个 ip 可视化为查询

将 Simple Go Web 应用程序部署到 Elastic Beanstalk