まずやるべきこと
- config.logを見る(configureと同じディレクトリに出力されている)
たいていは、何が起きているか理解はできると思われる。
解決方法
ライブラリの参照がうまくいっていない場合
/usr/bin/ld: cannot find -lxxx
という感じのエラーがかかれているときは、
- ライブラリそのものがない
- 置き場所が違う
ということが考えらえる。たとえば、xxx何とかというライブラリがあるかどうかは、
find / -name libxxx* # *ワイルドカードをつけること。付けないと完全一致したファイル名しか出てこないので
などで調べれば、とりあえず有り無しはわかる。
存在する場合
/usr/lib/arm-linux-gnueabihf/libxxx.so
findで、目的のファイルが出てきているのであれば、configureで探しに行かない場所においてあるだろうから、
が解決法になる。参照先を追加するには、以下の2通りの方法がある。
(1)configureの引数を追加
./configure --help
configureのヘルプを見ると、こちらなどにもあるがたくさんの引数があることがわかる。ライブラリ検索ディレクトリ追加の引数が用意されている場合もあれば、LDFLAGSという環境変数を指定せよというものもある。いずれにしろ、 ヘルプをよく読む。
# 引数が用意されている場合の例 ./configure --with-libs=ライブラリの置き場所のディレクトリ # 環境変数LDFLAGSで指定せよという場合の例 export LDFLAGS="-Lライブラリの置き場所のディレクトリ" ./configure
LDFLAGSは、機能しない場合もあるらしい。実際、私もそういう場面に遭遇したことがある。
(2)シンボリックリンクを張る
(1)がスマートだが、うまくいかない場合は、これでもよい。version番号が入っている.soファイルの場合、version名の有り無しで検索してくれる場合とそうでない場合がある気がするので、うまくいかない場合はバージョン番号なしのリンクを作るといいかもしれない。
ln -s ライブラリのパス configureが探しに行けるディレクトリ # または ln -s ライブラリのパス configureが探しに行けるディレクトリ/libxxx.so
という感じ。configureが探しに行けるディレクトリは、/libなどだと思われる。
存在しない場合
パッケージをダウンロードしてインストール。
他の問題に当たったら、追記する。