首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用go构建静态链接共享库

使用go构建静态链接共享库
EN

Stack Overflow用户
提问于 2019-07-28 18:06:57
回答 1查看 2.6K关注 0票数 3

我需要创建一个静态库,以便在一个码头容器中运行它。在使用go run main.go运行我的代码时,它只是运行得很顺利。然而,当我尝试将我的代码构建为一个静态程序(将所有动态依赖项重新编译成一个独立的库,包括共享库)时,事情就变得复杂起来了。

我的应用程序依赖于位于我的/usr/local/lib/librandom_c.so中的C共享库,而我的应用程序源代码位于$GOPATH/src/github.com/<user>/myapp中。

当我构建应用程序时,没有试图静态链接共享库,它可以正常工作:

代码语言:javascript
复制
go build -a -o hello .

然后,...but抱怨共享库不存在(从头开始使用)。

到目前为止,我已经尝试了许多组合来静态构建我的应用程序:

代码语言:javascript
复制
go build -a -ldflags '-linkmode "external" -extldflags "-static"' -o hello .

给出错误:

找不到-lrandom_c

如何静态地链接我的库?

EN

回答 1

Stack Overflow用户

发布于 2019-10-09 16:08:44

CL 26492表明,它可能与以下操作一样简单( Go 1.14 Q1 2020,尚未确认):

代码语言:javascript
复制
go build -static

这将封装以下几个神奇的咒语:

  • windows:-tags netgo -ldflags '-H=windowsgui -extldflags "-static"'
  • linux/bsd:-tags netgo -ldflags '-extldflags "-static"'
  • macos:-ldflags '-s -extldflags "-sectcreate __TEXT __info_plist Info.plist"'
  • 安卓:-ldflags -s
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57243667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档