奮闘・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アーキテクチャは一致していますね。

今回の調査ではエラーの対処どころか原因の特定にも至りませんでした。
ちょっと違うアプローチでの調査が必要なようです。
苦労が多いなぁ。