linux – 如何打包Go程序以使其自给自足?
我有一个Go程序,我想在交换机上运行它.由于我无法在交换机上安装Go,我只是复制可执行文件并尝试运行.但是我收到以下错误.
如何将Go可执行文件与其所有依赖项打包在一起? 编辑1:这是ulimit -a转储.
最佳答案
TL; DR
您的Go应用程序无法分配虚拟内存来运行.我以前从未为开关开发过,但是如果它运行linux或unix变体,请检查组/用户权限和ulimit值以检查该用户是否有任何限制.也许this question可能会有所帮助 更长的版本 所以,你的问题不是没有go开发环境就能运行,因为你真的不需要它. Go因生成静态二进制文件而闻名,根据定义,这些二进制文件是自包含的,并且不依赖于其他库来运行. 如果您更好地查看错误消息,您会注意到它说: “无法保留竞技场虚拟地址空间” 你可能会问自己“这个竞技场是什么?” 我快速看一下malloc的源代码给我们一个提示:
如果您浏览该源代码,您将找到错误消息around here. 运行时·SysReserve C函数是实际尝试为竞技场保留虚拟地址空间的函数.如果它不能分配它,它将抛出该错误. 您可以找到它的Linux实现的代码here. 正如通常试图避免大的分配,因为可能会立即失败,如果您的用户不能分配小到64K的东西,这意味着您的用户有严格的限制.由于我不知道您的交换机正在运行哪个操作系统并且没有为它们开发的经验,因此我不能再进一步了解. 如果您可以提供更多信息,我可以尝试相应地更新此答案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- linux – ELF动态加载器符号查找排序
- linux-kernel – sysfs属性在Linux设备驱动程序中是否可以采
- linux – 如何处理vim的交换文件系统?
- linux – docker-compose在添加veth(虚拟接口)桥接docker0时
- 如何在tmux / vim中启用鼠标支持,以便即使在ssh到远程主机后
- linux – 如何使用BASH比较两个文本文件的相同确切文本?
- linux – mdadm – raid设备名称在重新启动时更改
- linux – TLB中的内核内存(虚拟地址条目)?
- linux – StartSSL证书不适用于Dovecot / OpenSMTPD
- Linux的PS1.PS2.PS3.PS4等环境变量;Crontab的两个坑人点;变