go語言編譯二進(jìn)制文件 golang 二進(jìn)制文件

golang編寫的項(xiàng)目,使用alpine制作鏡像遇到的一個(gè)問題解決

GraphicsMagick,一款高性能的圖片處理工具,由于項(xiàng)目需要,用到它,自然而然用到了關(guān)于gm的第三方庫 這個(gè)庫按照作者的提示,要安裝GraphicsMagick-devel依賴。

10年積累的成都網(wǎng)站建設(shè)、網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有永善免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

項(xiàng)目寫完了,接下來用alpine做為基礎(chǔ)鏡像,準(zhǔn)備制作項(xiàng)目的鏡像。

golang項(xiàng)目,是在ubuntu下編寫的,編譯成二進(jìn)制文件了,只要把二進(jìn)制文件放進(jìn)鏡像里即可,遇到的問題有2個(gè)

1 容器跑起來,一直報(bào)二進(jìn)制文件no found

我認(rèn)認(rèn)真真的確認(rèn)了文件,以及它的路徑,確實(shí)是存在的,怎么會報(bào)文件找不到呢?!

原來是musl和glibc是兼容的問題,在Dockerfile里要加以下兩步

2 Error loading shared library libGraphicsMagickWand-Q16.so.2: No such file or directory

明明按要求安裝GraphicsMagick-devel依賴,為啥還報(bào)這種錯(cuò)

于是想到了,是不是也要ln做一下軟鏈接呢?于是學(xué)著上面的樣子在Dockerfile里補(bǔ)上

再跑,問題依舊,莫非是軟連接的地址寫錯(cuò)了!回到開發(fā)的電腦上用ldd命令查看一下

果然,編譯后的二進(jìn)制文件依賴路徑是/lib,而不是/lib64

于是,修改Dockerfile里的寫法

問題解決,開心:)

參考資料:

golang 在mac 下go install成二進(jìn)制文件,上傳到centos 無法執(zhí)行

mac下編譯器默認(rèn)編譯的是mac os x的可執(zhí)行文件。

編譯centos上的可執(zhí)行文件的時(shí)候需要交叉編譯。

golang的交叉編譯很容易,你的情況的話用下面這條命令

GOOS=linux GOARCH=amd64 go build ./文件

go build -ldflags 打印編譯信息

go語言方便的地方之一就是容易部署, 編譯成二進(jìn)制文件,丟到服務(wù)器,就像一個(gè)內(nèi)建的bash程序,不用安裝依賴,不用部署環(huán)境,不用管理源碼,直接就運(yùn)行了。這也會產(chǎn)生一個(gè)問題, 經(jīng)過年深日久的運(yùn)行后,某天需要修改一個(gè)功能,可能最初開發(fā)的同事幾經(jīng)易手,那么,如何從這個(gè)二進(jìn)制文件找到源碼和對應(yīng)的信息呢?

本文主要就是解決這個(gè)問題,利用 go build 的 -ldflags -X, 把程序及相關(guān)的環(huán)境信息編譯進(jìn)項(xiàng)目的的help信息中,當(dāng)程序執(zhí)行-v時(shí),有如下的輸出:

文件準(zhǔn)備完成后, 執(zhí)行下面的命令,把文件加入git版本管理中,如果不加git管理, build.sh中的腳本會執(zhí)行報(bào)錯(cuò):

現(xiàn)在執(zhí)行build.sh 編譯二進(jìn)制文件,執(zhí)行完成后,可見文件目錄中多了一個(gè)文件 version-example

分享題目:go語言編譯二進(jìn)制文件 golang 二進(jìn)制文件
轉(zhuǎn)載來源:http://muchs.cn/article22/dohoccc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、電子商務(wù)、網(wǎng)站制作、定制開發(fā)、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作