当前位置: 首页 > 科技观察

尖端!Mac环境下编译Go服务

时间:2023-03-14 22:48:34 科技观察

本文转载自微信公众号《董泽润的技术笔记》,作者董泽润。转载本文请联系董泽润技术笔记公众号。背景本次分享来自于上午与同事的讨论。大多数工程师使用Mac作为开发环境。正常情况下,在本地编译go代码是没有问题的。有时,需要linux二进制文件。交叉编译就够了。场景,Mac无法使用CGO解决代码。我想使用gdb来调试第二种情况。gdb折腾了一段时间,还是不如linux平台那么完美。之前很笨,老是把代码clone到linux开发机上。不能解决吗?Docker的解决方案是:Docker启动ubuntu虚拟机,然后将本地的GOPATH目录挂载到容器中。下面看一下具体操作:installdockerformac可以自行google。这里要注意增加cpu和内存,不然编译大代码的时候会内存不足。~$dockerpullubuntu~$dockercreate-ti--cpus6-m6GB--privileged--namesextant-v/Users/zerun.dong/:/root/zerun.dongubuntubash-l~$dockerstart-aisextant以上命令是下载ubuntuimage分别创建一个名为sextant的容器,最后重新启动——cpus-m是用来设置资源的,less不行。/Users/zerun.dong/:/root/zerun.dong用于挂载容器中/root/zerun.dong下的本地目录。Privileged允许容器以宿主机的root权限进入容器。安装gobinary,然后设置GOPATH、PATH、GOROOT进行编译。编译成功后,linux二进制文件会留在Mac机上。也可以直接在容器中使用gdb调试,非常方便~$dockerps-a|grep-iubuntu~$dockercommitd497d0fee14dubuntu:go当然推荐使用dockercommit保存刚才的容器运行时,这样下次可以直接使用ubuntu:go镜像,然后编译,省去了刚才的操作步骤