一個專案 兩個cgo依賴編譯不通過

yabajiangdaya發表於2018-08-21

golang 專案有兩個 cgo 依賴,一個是依賴包自己搞的,一個是公司內部的庫。 export CGO_LDFLAGS="-L$xxx_GO_SO_PATH -lxxx_go" go build main.go

如果用這種方法單獨編譯 demo 程式是沒問題的,但是在工程中會影響到 另一個庫的編譯。 比如用 go build -n 將所有過程列印出來

CGO_LDFLAGS=-L/go/src/xxx" "-lxxx_go" "-g" "-O2" /usr/local/go/pkg/tool/linux_amd64/cgo -objdir $WORK/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/_obj/ -importpath vendor/github.com/ethereum/go-ethereum/crypto/secp256k1 -- -I $WORK/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/_obj/ -g -O2 -I/go/src/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1 -I/go/src/vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src curve.go panic_cb.go secp256.go

多出來-lxxx_go 事實上編譯這個原始檔是不需要連結這個庫的。這樣編譯會報如下錯誤

vendor/github.com/ethereum/go-ethereum/crypto/secp256k1

go/src/qbus/libxxx_go.so:對 ‘Swig_DirectorQbusConsumerCallback_callback_deliveryMsg_xxx_f46fb9e702ff9493’ 未定義的引用

目前想到的思路就是如何將這個連結 -L 去掉,還是根本沒有影響錯在了別的地方。 請各位大神幫看看

如果單獨寫 demo 測試是沒有問題的 (證明連結庫是存在該方法的)

更多原創文章乾貨分享,請關注公眾號
  • 一個專案 兩個cgo依賴編譯不通過
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章