第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Cgo:對(duì) [C 函數(shù)] 的未定義引用

Cgo:對(duì) [C 函數(shù)] 的未定義引用

Go
ITMISS 2022-11-28 10:36:50
我在 docker 容器 ( golang:1.18-bullseye) 中運(yùn)行一個(gè) go 程序。我試過(guò)用go run main.go和運(yùn)行它go run .我的代碼看起來(lái)像這樣,兩個(gè)頭文件都位于IncludeCFLAGS 中給定的目錄中:/*#cgo LDFLAGS: -Lvendor/MyCoolLibrary/1.14.2/Bin/Linux/libSDK-Linux-Shipping.so#cgo CFLAGS: -I vendor/MyCoolLibrary/1.14.2/Include/#include "my_cool_sdk.h"#include "my_cool_logging.h"*/import "C"import (    "fmt"    "log"    "os"    "runtime")func main() {ret := C.MyCoolFunc()}當(dāng)我運(yùn)行此代碼時(shí),我收到此錯(cuò)誤消息:/usr/bin/ld: $WORK/b001/_x002.o: in function `_cgo_6bb9bcf96ac6_Cfunc_MyCoolFunc':/tmp/go-build/cgo-gcc-prolog:110: undefined reference to `MyCoolFunc'我怎樣才能解決這個(gè)問(wèn)題?編輯:我將標(biāo)題更改為:/*#cgo LDFLAGS: -L${SRCDIR}/vendor/MyCoolLibrary/1.14.2/Bin/Linux/libSDK-Linux-Shipping.so -lSDK-Linux-Shipping#cgo CFLAGS: -I ${SRCDIR}/vendor/MyCoolLibrary/1.14.2/Include/#include "my_cool_sdk.h"#include "my_cool_logging.h"*/然后運(yùn)行g(shù)o build -x .,這是輸出:WORK=/tmp/go-build1175764972mkdir -p $WORK/b001/cd /home/helloworldTERM='dumb' CGO_LDFLAGS='"-g" "-O2" "-L/home/helloworld/vendor/MyCoolLibrary/1.14.2/Bin/Linux/libSDK-Linux-Shipping.so" "-lSDK-Linux-Shipping"' /usr/local/go/pkg/tool/linux_amd64/cgo -objdir $WORK/b001/ -importpath go-sandbox -- -I $WORK/b001/ -g -O2 -I ./vendor/MyCoolLibrary/1.14.2/Include/ ./main.gocd $WORKgcc -fno-caret-diagnostics -c -x c - -o /dev/null || truegcc -Qunused-arguments -c -x c - -o /dev/null || truegcc -fdebug-prefix-map=a=b -c -x c - -o /dev/null || truegcc -gno-record-gcc-switches -c -x c - -o /dev/null || truecd $WORK/b001
查看完整描述

1 回答

?
jeck貓

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊

我能夠重現(xiàn)并修復(fù)這個(gè)問(wèn)題。還有一些額外的問(wèn)題。從專(zhuān)注于跑步開(kāi)始go build

好的所以 go 編譯器找到了頭文件,但是找不到共享庫(kù)。我認(rèn)為您稍微修改了問(wèn)題的代碼,這不是問(wèn)題,但-Lin的路徑LDFLAGS必須是:

  • 相對(duì)于源目錄使用${SRCDIR}

  • 絕對(duì)路徑

  • 完全避免這種情況并利用 pkg-config 我只是使用包含so文件的相對(duì)目錄作為-L.

好的,除此之外,您還必須-l在 LDFLAGS 中給出一個(gè)參數(shù),以在您指向的路徑中找到文件(即:libvendera.so需要-lvendora)。

一旦go build工作,您的應(yīng)用程序仍然需要知道文件的so運(yùn)行位置(因此是共享庫(kù))。為此,您可能需要設(shè)置LD_LIBRARY_PATH并指向包含so文件的目錄,就像您對(duì)-L.


查看完整回答
反對(duì) 回復(fù) 2022-11-28
  • 1 回答
  • 0 關(guān)注
  • 135 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)