2012-12-16 13 views
8

私は、openCVをUbuntu 12.04で正しくリンクさせるのに長時間を費やしましたが、他の人の利益のために学んだことを分かち合うと思いました。 OpenCVのこのバージョンのライブラリの異なる命名規則を持っていることを(私が間違っている場合は、私を修正してください)Ubuntu 12.04でのOpenCVのコンパイルとリンク

OpenCVのは素晴らしいです

sudo apt-get install libopencv-dev 

としてUbuntuのリポジトリで利用できるようになりましたが、私は信じています。主な違いは、C++ではインクルード行が読み取られるべきであるということです。

これでコードはオブジェクトにコンパイルされますが、リンクされません。もう1つの違いは、静的ライブラリの名前がlibcv *からlibopencv *に変更されていることです。たとえば、バイナリは今、私は明示的に

target_link_libraries(main opencv_core opencv_highgui ...) 
CMakeの

g++ main.cpp -lopencv_core -lopencv_highgui ... 

したりして、私のコンパイラのコマンドを変更することにより、新しいライブラリ名について、リンカに伝えるために必要なこれを修正するには

/usr/lib/libopencv_core.so 
/usr/lib/libopencv_highgui.so 
. 
. 
. 

に配置することができます

こちらがお役に立てば幸いです。誰もが私より多くを知っているなら、ここで何が起こっているのかを知りたいです。

-Mike

+0

知っているのですか?私はEclipse 3.7をUbuntu 12.04で使用しています。 – wrahool

答えて

5

個人的に、私はコンパイルフラグを取得する 'のpkg-config' を使用しています。メインの

g++ `pkg-config --cflags opencv` main.c `pkg-config --libs opencv` -o main 

例:あなたがUbuntuで日食に同じことを行う方法を

#include <stdio.h> 
#include <cv.h> 

int main(void) 
{ 
    printf("%s\r\n", CV_VERSION); 
    printf("%u.%u.%u\r\n", CV_MAJOR_VERSION, CV_MINOR_VERSION, CV_SUBMINOR_VERSION); 
} 
関連する問題