- ベストアンサー
MacにOpenCVをインストールする際に起きるエラーとその解決方法
- MacにOpenCVをインストールしている際に、cd opencvと打つとエラーメッセージが表示されることがあります。
- エラーメッセージには「dlopen(/opt/local/share/macports/Tcl/macports1.0/MacPorts.dylib, 10): no suitable image found. Did find: /opt/local/share/macports/Tcl/macports1.0/MacPorts.dylib: mach-o, but wrong architecture」と表示されます。
- このエラーメッセージは、MacにMacPortsがインストールされており、OpenCVのインストールに問題があることを示しています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> この状態で、sudo port install opencv を実行しても大丈夫ということでしょうか? やってみてください。 エラーメッセージは出てないので、ffmpegは正しくインストールされたはずです。 ちょっと苦言を申し上げると ソースからビルドする際に、資料の通りにやってもうまくいかないことは多々あります。 資料自体に間違いがある場合もあれば、作成当時は正しかったがバージョンアップで状況が変ったもの、資料作成者の環境(OS,インストールされているライブラリ等)では正しいが他の環境では追加作業や変更が必要なもの、などいろいろです。 まして、(最初にやろうとしていた)開発版ではその確率は上ります。 もう少し、御自身でメッセージを読んで、考えたり調べたりするようにしてください。 なお、そのffmpegについてのメッセージですが ffmpegはいろんなフォーマットに対応するため、外部ライブラリを使用していますが、そのうち libfaacは、(自由という意味での)フリーではありません。そのため、 libfaacを組み込んだffmpegと関連ライブラリのバイナリーファイルをそのまま再配布するのはライセンス上問題があります。 再配布可能なバイナリーにするには、variantとして +no_nonfreeを指定してください。 ということです。再配布しないで個人で使う分には関係ないものです。
その他の回答 (3)
- kmee
- ベストアンサー率55% (1857/3366)
> Error: Requested variants "" do not match original selection "+universal". > Please use the same variants again, perform 'port clean gperf' or specify the force option (-f). このメッセージは、ワークディレクトリにあるビルド途中のもののvariantの指定が、これからインストールしようとするものと不一致のときに出ます。 主に、過去にインストールしようとして失敗してそのまま放っておいた場合に出ます。 メッセージにあるように ・同じvariantを指定する(今回のなら +universal) ・sudo port clean ポート名 でワーキングディレクトリを削除してから、もとのportコマンドを再実行する ・sudo port -f ... と -fオプションで強制的に実行する。 のいずれかで対応します。 まずは、あなたの方針を決定します ・32bit/64bit両用のシステムを構築したい場合 → 先のsudo port upgrade ... に +universal を追加して、可能なものはuniversal版をインストールする。 ffmpegにuniversalのvariantは無いけど、無視されるだけなので問題なし。 ・現在のシステム限定でよい →sudo port clean gperf を実行してから、sudo port upgradeを実行する。 似たようなメッセージがでるようなら、 perform 'port clean gperf' の gperfが別なものになっているはずなんで、sudo port clean XXXX を実行→upgrade を繰り返す。
補足
32bit/64bit両用のシステムを構築したいと考えていますので、sudo port upgrade ... +universalと実行しましたところ ******* ******* This build of ffmpeg includes nonfree code as follows: ******* ******* libfaac ******* ******* The following libraries and binaries may not be redistributed: ******* ******* ffmpeg ******* libavcodec ******* libavdevice ******* libavfilter ******* libavformat ******* libavutil ******* ******* To remove this restriction use variant +no_nonfree ******* ---> Cleaning ffmpeg と出ました。 この状態で、sudo port install opencv を実行しても大丈夫ということでしょうか?
- kmee
- ベストアンサー率55% (1857/3366)
そのエラーメッセージにある通りです。 OpenCVはffmpegに依存していますが、既にMacPortsを使ってインストールされているffmpegがi386用(32bit版)なので、x86_64用(64bit版)のOpenCVには使えない、ということです。 sudo port -u upgrade --force --enforce-variants ffmpeg で現在の環境に合せて再コンパイルされるはずなので、この後でopencvをインストールしてみてください。 ところで、cd opencv は必要ですか? svn co ...は Macportsからのインストールには必要の無い作業ですが。
補足
sudo port -u upgrade --force --enforce-variants ffmpeg と打ったところ Error: Requested variants "" do not match original selection "+universal". Please use the same variants again, perform 'port clean gperf' or specify the force option (-f). Error: Unable to upgrade port: 1 To report a bug, see <http://guide.macports.org/#project.tickets> とエラーが出てきてしまいました…選択が環境に合ってないということでしょうか…? cd opencvはいらないですね。ご指摘ありがとうございます。
- kmee
- ベストアンサー率55% (1857/3366)
> (file "/opt/local/bin/port" line 39) とあるので、portコマンド自体が正常に実行できていません。 よって、opencv等のインストールもできていません。 ちなみに、インストールに成功した場合は ---> Computing dependencies for XXXXX ---> Fetching archive for XXXXX (略) ---> Activating XXXXX @X.X.X_X+XXXX という程度の素気無いメッセージが表示されるだけです(-dオプションを付けなかった場合) > /opt/local/share/macports/Tcl/macports1.0/MacPorts.dylib: mach-o, but wrong architecture というメッセージからして、MacPortsのインストール自体がうまくいってないように思えるのですが。 http://distfiles.macports.org/MacPorts/ こちらから最新1.9.1で使用しているOSに対応したdmgイメージをダウンロード →マウント →インストールパッケージでインストール するとどうなるでしょうか。
補足
macportsをインストールし、 $cd opencv $sudo port install opencv と打ってみたところエラーが発生してしまいました…以下の通りです。 Error: Cannot install opencv for the arch(s) 'x86_64' because Error: its dependency ffmpeg is only installed for the arch 'i386' Error: and does not have a universal variant. Error: Unable to execute port: architecture mismatch To report a bug, see <http://guide.macports.org/#project.tickets>
お礼
ありがとうございます。参考になりました。勉強不足で申し訳ありません。 つい聞くことに楽を覚えてしまって、自分で調べることを怠っていました。 インストールはまた新たな問題が出てきてしまって、まだ出来ていないのですが、少し自分で頑張ってみようと思います。 質問の回答、アドバイス大変ためになりました。感謝します。 また、もう駄目だ!というぎりぎりの時に質問させて頂くかもしれませんが、その時はまたアドバイスを頂けると助かります。 では、失礼いたします。