首頁 > 後端開發 > Golang > 如何在 Linux 上將 Go CGO 可執行檔與 Oracle 庫靜態連結?

如何在 Linux 上將 Go CGO 可執行檔與 Oracle 庫靜態連結?

Patricia Arquette
發布: 2024-11-25 10:50:11
原創
318 人瀏覽過

How to Statically Link a Go CGO Executable with Oracle Libraries on Linux?

在Linux 上連結Go CGO 執行檔與Oracle 函式庫的靜態執行

問題陳述:

編譯錯誤表示找不到Oracle函式庫-lclntsh。儘管嘗試設定環境變數並安裝 Oracle 資料庫包中的附加文件,靜態編譯仍然失敗。

CGO_ENABLED=1 go build -work -x -ldflags "-v -linkmode external -extldflags -static"  ${MAIN_SRC}
登入後複製

解:

    產生靜態庫:
  1. Oracle 通常不附靜態庫.a。要產生它,請執行以下命令:

    $ORACLE_HOME/bin/genclntst
    登入後複製
  2. 連結應用程式:
  3. 將您的應用程式與產生的靜態庫連結:

    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}
    登入後複製
  4. 處理缺失符號(可選):
  5. 如果仍然缺少符號,請使用 nm 工具來識別它們。然後,根據需要添加其他靜態庫來解決依賴關係。

  6. 附加說明:

使用 Oracle 中的連結器實用程式可能是有助於分析依賴關係。

    根據 Oracle 版本和編譯器,可能需要連結其他ICC 執行階段靜態函式庫。
  • 靜態連結需要手動解析所有依賴項,這可能很複雜。

以上是如何在 Linux 上將 Go CGO 可執行檔與 Oracle 庫靜態連結?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板