Open9

Go * OracleDB 周り

zztkmzztkm

Oracle database と連携した Go アプリケーションを書きたいと思ったので調査&検証する。

参考情報

zztkmzztkm

自分の想定している環境は Oracle Instant Client がインストールされているので godror がクロスコンパイルも簡単で良さそうかも。go-oci8 は pkg-config 周りがよくわかっていないし、godror で十分だったので使うモチベーションが湧かなかった...(いつか気が向いたら再チャレンジしたい

zztkmzztkm

godror を使ったアプリケーションのクロスコンパイルは以下のようにした。cc に zig を選んでみた

例えば Windows 向け

CGO_ENABLED=1 GOOS=windows GOARCH=amd64 CC="zig cc -target x86_64-windows" CXX="zig cc -target x86_64-windows" go build -trimpath -o app.exe main.go

初回ビルドは少し時間かかるが、キャッシュが効けばあとは早い。

zztkmzztkm

以下のエラーが出るので結局うまくいってない。。

failed to ping connection: ORA-00000: DPI-1047: Cannot locate a 64-bit Oracle Client library: "Dynamic loading not supported". See https://oracle.github.io/odpi/doc/installation.html#linux for help

コンテナ定義はここを参考にというかそのまま使ったのだが、それでもうまくいってない.
https://odpi-c.readthedocs.io/en/latest/user_guide/installation.html#dockerfiles

zztkmzztkm

LD_LIBRARY_PATH 環境変数の値が悪いのかもしれないので調査してみる