共有ライブラリが読み込めない

http://d.hatena.ne.jp/yukichanko/20100608/1275971551
この続き。


日を変えて、再度実行したら、やはり文字列が化けてしまったので、Macから別環境(会社のLinuxサーバー)に移して再現実験をしてみることにした。


Linuxで実行すると、Segmentation Faultで死んでくれたので「しめしめ、gdbで見てみるか」とご機嫌でgdbを実行したら、

(gdb) run --cache_in=./data/hoge.xml.cache --ana=hoge.xml
Starting program: /svhome/mizukusa/bin/hoge --cache_in=./data/hoge.xml.cache --ana=hoge.xml
/svhome/mizukusa/bin/hoge: error while loading shared libraries: libexpat.so.1: cannot open shared object file: No such file or directory

ん、共有ライブラリが見つからない? LD_LIBRARY_PATHは通しているのに?


よくわからないので、gccのオプションで下記を指定してコンパイル。

  • Wl,-rpath=/svhome/mizukusa/lib

'-rpath'は「実行時のライブラリ検索パスに指定したディレクトリを追加する」と言うリンカのオプションらしい(詳しくは参照ページを)。


兎にも角にも、これでgdbは起動して、ちゃんと共有ライブラリもロードできた。
さて、デバッグ。。。。あれ、コマンドライン実行時と違うモードで落ちてる。。。。これはまた別のお話orz