新聞中心
本文轉(zhuǎn)載自微信公眾號(hào)「董澤潤(rùn)的技術(shù)筆記」,作者董澤潤(rùn)。轉(zhuǎn)載本文請(qǐng)聯(lián)系董澤潤(rùn)的技術(shù)筆記公眾號(hào)。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請(qǐng)、網(wǎng)絡(luò)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、普陀網(wǎng)站維護(hù)、網(wǎng)站推廣。
背景
本篇分享來(lái)源于上午和同事的討論。大部分工程師都使用 Mac 做為開(kāi)發(fā)環(huán)境,平常 local 編譯 go 代碼沒(méi)什么問(wèn)題,偶爾需要 linux binary, 交叉編譯足夠了
- GOOS=linux GOARCH=amd64 go build main.go
比如上面指定 GOOS 是 linux, GOARCH 平臺(tái)是 amd64. 但還是有些場(chǎng)景,Mac 無(wú)法解決
- 使用 CGO 的代碼
- 想使用 gdb 去調(diào)試
第二個(gè)場(chǎng)景 gdb 我還折騰過(guò)一段時(shí)間,始終無(wú)法像 linux 平臺(tái)那樣完美。以前很蠢的,總是將代碼 clone 到 linux 開(kāi)發(fā)機(jī)上。難道無(wú)法解決了嘛?
Docker
解決辦法就是:Docker 啟動(dòng) ubuntu 虛擬機(jī),然后掛載本地 GOPATH 目錄到容器中
讓我們來(lái)看下操作細(xì)節(jié):
安裝 docker for mac 可以自行 google, 這里要注意調(diào)大 cpu 和 memory, 否則編譯大型代碼時(shí)內(nèi)存不足。
- ~$ docker pull ubuntu
- ~$ docker create -ti --cpus 6 -m 6GB --privileged --name sextant -v /Users/zerun.dong/:/root/zerun.dong ubuntu bash -l
- ~$ docker start -ai sextant
上面命令分別是下載 ubuntu 鏡像,創(chuàng)建名為 sextant 的容器,最后再啟動(dòng)
這里面 -cpus -m 用來(lái)設(shè)置資源,少了不夠用。/Users/zerun.dong/:/root/zerun.dong 用于將本機(jī)目錄掛載到容器中的 /root/zerun.dong 下面,privileged 允許容器對(duì)宿機(jī)主 root 權(quán)限
進(jìn)到容器后,需要再安裝 go binary, 然后設(shè)置好 GOPATH, PATH, GOROOT 后即可進(jìn)行編譯
成功后就會(huì)在 Mac 本機(jī)留下 linux binary, 也可直接在容器中用 gdb 進(jìn)行調(diào)試,非常方便
- ~$ docker ps -a | grep -i ubuntu
- ~$ docker commit d497d0fee14d ubuntu:go
當(dāng)然建議使用 docker commit 保存剛才的容器運(yùn)行時(shí),這樣下次就可以直接使用 ubuntu:go 鏡像,然后編譯,省去剛才的操作步驟
新聞名稱:小技巧!Mac環(huán)境下編譯Go服務(wù)
鏈接地址:http://www.5511xx.com/article/dhoeggj.html


咨詢
建站咨詢
