golang下的GOPATH路徑問題及解決
背景
我需要開發(fā)一個組建,所以代碼結(jié)構(gòu)沒有src目錄,并且項(xiàng)目放在GOPATH路徑的src目錄下
我在編譯二進(jìn)制文件的時候使用了下面的命令
GOPATH=`pwd` GOBIN=`pwd` go install main.go
編譯報(bào)錯,提示import的類庫找不到
排錯分析
- 檢查env是否正確 命令:
go env,檢查結(jié)果正常 - 檢查golang的GOPATH和GOROOT配置是否正常,檢查通過
- 分析編譯命令找到問題
問題
我在編譯的時候重新定義了GOPATH路徑。
在go語言編譯的時候,它會去找GOPATH和GOROOT下面的src目錄。
現(xiàn)在GOROOT=~/gopath/,那么首先編譯器到GOROOT下找import的包,如果沒有找到,則到GOPATH路徑下尋找
此時GOPATH=`pwd`,也就是項(xiàng)目路徑,那么它會到項(xiàng)目路徑下的src目錄下尋找。
由于我沒有src目錄,所以找不到,從而編譯報(bào)錯
解決
問題其實(shí)出在GOPATH下,由于當(dāng)前項(xiàng)目文件已經(jīng)處于GOPATH的src下,所以只需要刪除GOPATH即可。
正確編譯命令:
GOBIN=`pwd` go install main.go
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Go語言時間管理利器之深入解析time模塊的實(shí)戰(zhàn)技巧
本文深入解析了Go語言標(biāo)準(zhǔn)庫中的time模塊,揭示了其高效用法和實(shí)用技巧,通過學(xué)習(xí)time模塊的三大核心類型(Time、Duration、Timer/Ticker)以及高頻使用場景,開發(fā)者可以更好地處理時間相關(guān)的任務(wù),感興趣的朋友一起看看吧2025-03-03
Go中跨語言實(shí)現(xiàn)傳輸?shù)姆椒ú襟E
gRPC是Google開源的高性能RPC框架,基于HTTP/2協(xié)議和ProtocolBuffers序列化,支持多語言、流式傳輸和企業(yè)級特性,文章詳細(xì)介紹了gRPC的接口定義語言、服務(wù)定義、消息類型、RPC類型以及服務(wù)端和客戶端的實(shí)現(xiàn)方式,需要的朋友可以參考下2026-04-04
Go語言排序算法之插入排序與生成隨機(jī)數(shù)詳解
從這篇文章開始將帶領(lǐng)大家學(xué)習(xí)Go語言的經(jīng)典排序算法,比如插入排序、選擇排序、冒泡排序、希爾排序、歸并排序、堆排序和快排,二分搜索,外部排序和MapReduce等,本文將先詳細(xì)介紹插入排序,并給大家分享了go語言生成隨機(jī)數(shù)的方法,下面來一起看看吧。2017-11-11
Go語言Gin框架前后端分離項(xiàng)目開發(fā)實(shí)例
本文主要介紹了Go語言Gin框架前后端分離項(xiàng)目開發(fā)工程化實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11
一篇文章讀懂Golang?init函數(shù)執(zhí)行順序
init()函數(shù)會在包被初始化后自動執(zhí)行,并且在main()函數(shù)之前執(zhí)行,但是需要注意的是init()以及main()函數(shù)都是無法被顯式調(diào)用的,下面這篇文章主要給大家介紹了關(guān)于如何通過一篇文章讀懂Golang?init函數(shù)執(zhí)行順序的相關(guān)資料,需要的朋友可以參考下2022-11-11

