- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:gcc使用時のエラー)
gcc使用時のエラー
このQ&Aのポイント
- openCV画像処理プログラミングでgccを使用した際のエラーです。
- 共有ライブラリへのパスが通っていないことが原因でエラーが発生しています。
- pkg-configを使用することでコンパイルは通りますが、具体的な原因は不明です。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>1、上記エラーは共有ライブラリへのパスが通っていないために起きているものですか? 違います。 openCV関係のライブラリをリンクするように指定していないからです。 -L はライブラリを探すパスを指定しているだけで、リンクするライブラリは -l で指定しないといけません。 また環境変数LD_LIBRARY_PATHはプログラムの実行時のライブラリを探すパスを指定するものです。 pkg-configを使ってどういうコンパイルオプションやリンクオプションが指定されるのか確認されてみてはいかがでしょうか。
お礼
度々すみません、上記誤解しておりました。 -Lでライブラリを検索するパスを追加した後、-lで実際のライブラリ名を指定するのですね。 また、グーグルで引っかかりましたが、 例えば「libopencv_calib3d.so」をリンクしたい場合、 先頭の"lib"と末尾の.so拡張子を取り除いた上で使用するとの事を初めて知りました。 "-lopencv_calib3d"のようにしましたら無事コンパイルが通りました。 ありがとうございます。
補足
分かりやすい回答をありがとうございます。 しかし、自分が根本的に勘違いしている気がしてきました。 「-L はライブラリを探すパスを指定しているだけ」との事ですが、てっきり指定したパス(ディレクトリ)直下から、必要な共有ライブラリをgccが探してリンクしてくれるものと思っていました。 そうではなく、一つ一つ必要なライブラリを自分で指定してやる必要があるという事でしょうか? また、もしそうだとすると-Lオプションの存在理由は、というか「ライブラリを探すパス」を指定する理由は何になるのでしょうか? 質問ばかりで恐縮ですが、ご助言頂ければ幸いです。 (なおpkg-configに関してですが、設定ファイルを見る限り/usr/local/lib以下にあるライブラリ(.so)を一つずつ指定しているように見えます。)