奮闘・HDBC-postgresqlを動かすための調査
前回いよいよHDBC-postgresqlの関数を動作させてみたのですが、エラーが出てPostgreSQLに接続は出来ませんでした。
エラーメッセージは以下の通りです。
Loading package HDBC-postgresql-2.3.2.0 ... can't load .so/.DLL for: pq (dlopen(/opt/local/lib/postgresql83/libpq.dylib, 9): no suitable image found. Did find: /opt/local/lib/postgresql83/libpq.dylib: mach-o, but wrong architecture)
パッケージHDBC-postgresqlが/opt/local/lib/postgresql83/libpq.dylibというライブラリをロードしようとしたが失敗した、と。ちなみに拡張子dylibはWindowsで言うところのdllに当たる物らしいです。
その後ろに続く
mach-o, but wrong architecture
という箇所を見ると、dylibのアーキテクチャ(CPUアーキテクチャ?)がおかしいよ、と言っているように見えます。ちょっと調べてみたら、dylibファイルのアーキテクチャを調べるコマンドがあるとのこと。早速やってみます。
lipo -info /opt/local/lib/postgresql83/libpq.dylib
結果は以下。
Non-fat file: /opt/local/lib/postgresql83/libpq.dylib is architecture: x86_64
ふむ。では我がMacBook AirのCPUアーキテクチャを調べるにはどうしたらいいのか。これもちょっと調べたところ、コマンドがありました。実行してみます。
sysctl -a hw
結果はずらずらと出てきますが、大事なのは以下の行。
hw.optional.x86_64: 1
・・・うーん、dylibのアーキテクチャとCPUアーキテクチャは一致していますね。
今回の調査ではエラーの対処どころか原因の特定にも至りませんでした。
ちょっと違うアプローチでの調査が必要なようです。
苦労が多いなぁ。