問題陳述:
編譯錯誤表示找不到Oracle函式庫-lclntsh。儘管嘗試設定環境變數並安裝 Oracle 資料庫包中的附加文件,靜態編譯仍然失敗。
CGO_ENABLED=1 go build -work -x -ldflags "-v -linkmode external -extldflags -static" ${MAIN_SRC}
解:
Oracle 通常不附靜態庫.a。要產生它,請執行以下命令:
$ORACLE_HOME/bin/genclntst
將您的應用程式與產生的靜態庫連結:
CGO_ENABLED=1 go build -work -x -ldflags "-v -linkmode external -extldflags -static -L/usr/lib/oracle/12.1/client64/lib -lclntsh -lclntst" ${MAIN_SRC}
如果仍然缺少符號,請使用 nm 工具來識別它們。然後,根據需要添加其他靜態庫來解決依賴關係。
使用 Oracle 中的連結器實用程式可能是有助於分析依賴關係。
以上是如何在 Linux 上將 Go CGO 可執行檔與 Oracle 庫靜態連結?的詳細內容。更多資訊請關注PHP中文網其他相關文章!