亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法打開 Go 插件

無法打開 Go 插件

Go
FFIVE 2022-09-19 17:22:20
我總是收到以下錯誤:plugin.Open("./plugin"): plugin was built with a different version of package internal/cpu我對這個問題做了一些研究,它清楚地指出,插件是使用不同的上下文版本(golang版本或依賴項)構建的,而不是加載插件的應用程序。我在 Docker 下進行了最小的測試,使用完全相同的 Go 編譯器版本和相同的映像來構建插件和應用程序,但我仍然收到相同的錯誤。如果有人能指出失敗的地方,或者我應該檢查什么來防止此錯誤,我將不勝感激。值得一提的是,我正在使用MacOS,但我正在Docker容器下運行測試。實際上,我能夠在Docker下為第三方產品構建和運行golang插件。代碼如下:// main.gopackage mainimport (    "fmt"    "plugin")func main() {    path := "./plugin.so"    p, err := plugin.Open(path)    if err != nil {        fmt.Printf("unable to load plugin at %s.\n%v", path, err)    }    symbol, err := p.Lookup("Create")    if err != nil {        fmt.Printf("unable to find Create() function in plugin %s.\n%v", path, err)    }    createMethod, ok := symbol.(func()interface{})    if !ok {        fmt.Printf("Create is not a function in plugin %s", path)    }    createMethod()}// plugin.gopackage mainfunc Create() interface{} {    return nil}//DockerfileFROM golang:1.13.5 as pluginBuilderWORKDIR /appCOPY . .RUN go build --buildmode=plugin --trimpath -o /plugin.so plugin.goFROM golang:1.13.5 as serverBuilderWORKDIR /appCOPY . .RUN go build -o /server main.goFROM debian:stable AS serverWORKDIR /appCOPY --from=pluginBuilder /plugin.so .COPY --from=serverBuilder /server .RUN /app/server謝謝
查看完整描述

1 回答

?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

您在構建插件時使用該選項,但在構建應用程序時未使用該選項。編輯 docker 文件,以便兩個構建都使用(或兩者都不使用),然后應用程序將運行(好吧,它在我的機器上確實如此)。-trimpath-trimpath


我對為什么這會導致問題的猜測是“從編譯的可執行文件中刪除所有文件系統路徑”,因此當運行時驗證版本時,它會拾取路徑中的差異。trimpath


以下是對我有用的dockerfile(復制了原始文件的問題;唯一的更改是添加到第二個):-trimpathgo build


FROM golang:1.13.5 as pluginBuilder


WORKDIR /app


COPY . .


RUN go build --buildmode=plugin --trimpath -o /plugin.so plugin.go


FROM golang:1.13.5 as serverBuilder

WORKDIR /app


COPY . .


RUN go build --trimpath -o /server main.go


FROM debian:stable AS server


WORKDIR /app

COPY --from=pluginBuilder /plugin.so .

COPY --from=serverBuilder /server .


RUN /app/server


查看完整回答
反對 回復 2022-09-19
  • 1 回答
  • 0 關注
  • 304 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號