2009-08-13 16 views
2

Ich versuche, OpenCV mit ICC unter Linux zu kompilieren, um die Ausführung mit Intel-Tools zu profilieren.Wie kompiliere ich OpenCV mit ICC?

Ich habe die letzte Version von ICC mit Standardoptionen installiert. Ich habe versucht sowohl "user" (icc ist in meinem Haus installiert) und "sudo" (icc ist in/opt installiert) installiert. Die Version von icc ist 11,1 20090630

ich auch iccvars.sh dachte zu beziehen, das Hinzufügen benötigten Pfade zu PATH und LD_LIBRARY_PATH

Ich habe auch versucht, mehrere Versionen von OpenCV: - das wichtigste: pre1.1. configure erkennt icc überhaupt nicht - die 'neuntest_snapshot' und die 'trunk' Versionen: icc wird gut von configure erkannt (--enable-openmp product -openmp option, und nicht -fopenmp)

Wenn ich mache, Bis zur Mitte der Compilation scheint alles in Ordnung zu sein. Dann kommen viele Warnungen (vielleicht hundert) immer über "Operator". Hier ein Beispiel:

../include/opencv/cxcore.hpp(335): warning #597: "cv::Size_<_Tp>::operator cv::Size_<float>() const [with 
_Tp=float]" will not be called for implicit or explicit conversions 
     operator Size_<float>() const; 
    ^
      detected during instantiation of class "cv::Size_<_Tp> [with _Tp=float]" at line 394 

Und finnally der Fehler:

/bin/bash ../../../libtool --tag=CXX --mode=compile icpc -DHAVE_CONFIG_H -I. -I../../.. -I../../../include/opencv -I. -DCV_NO_BACKWARD_COMPATIBILITY -fPIC -I/usr/include/python2.6 -g -O2 -MT _highgui_la-pyhelpers.lo -MD -MP -MF .deps/_highgui_la-pyhelpers.Tpo -c -o _highgui_la-pyhelpers.lo `test -f 'pyhelpers.cpp' || echo './'`pyhelpers.cpp 
_ml.cpp(36134): error: argument of type "uchar={unsigned char} *" is incompatible with parameter of type "int *" 
     result = (int)(arg1)->get_ord_var_data(arg2,arg3,arg4,arg5,(float const **)arg6,(uchar const **)arg7); 
                  ^

_ml.cpp(36134): error: argument of type "const uchar={unsigned char} **" is incompatible with parameter of type "const int **" 
     result = (int)(arg1)->get_ord_var_data(arg2,arg3,arg4,arg5,(float const **)arg6,(uchar const **)arg7); 
                         ^

compilation aborted for _ml.cpp (code 2) 
make[4]: *** [_ml_la-_ml.lo] Erreur 1 

ich jemand succeded OpenCV mit icc zu kompilieren, lassen Sie es mich wissen!

+0

Welcher Compiler wird offiziell für diese Bibliothek unterstützt? Hast du das zuerst versucht? Ich habe das vorher noch nie gemacht, aber wenn Sie es mit einem anderen Compiler kompilieren wollen, müssen Sie eine (harte?) Arbeit alleine machen. Diese 2 Fehler könnten viel mehr Fehler verbergen. –

+0

Ja, der Compiler icc soll für OpenCV unterstützt werden. –

Antwort

0

Ihr Problem kann durch die Verwendung einer anderen Version des ICC zur Erstellung dieser Bibliothek verursacht werden. Sie müssen den Bibliotheksanbieter fragen, welche Version verwendet werden soll.

1

Ok, ich habe endlich OpenCV mit ICC kompiliert. OpenCV steht Intel nahe, da Intel an diesem Projekt sehr beteiligt ist. Seit Version 1.1 soll OpenCV den icc-Compiler nativ unterstützen. Wenn Sie in configure CC = icc angeben, gibt es einige geringfügige Änderungen, da der -fopenmp (gcc-Stil) in -openmp (icc-Stil) umgewandelt wird. Zwischen der Veröffentlichung von OpenCV 1.1 (die neueste Version von stable) und jetzt hat sich icc jedoch weiterentwickelt. Ich denke, es verwendet, um mit früheren Version von ICC kompilieren.

Es ist mit der neuesten Version getestet auf svn comile: https://opencvlibrary.svn.sourceforge.net/svnroot/opencvlibrary/tags/latest_tested_snapshot/opencv/

Als svn evolve, könnte es ändern, aber zu dieser Zeit (27. August) es funktioniert. Die Warnungen sind immer noch hier (keine Angst, es gibt eine Menge). Hier meine configure bash line:

Ich deaktivierte Optimierungen und sse Anweisungen, da es einige Konflikte mit ICC erzeugt.

+0

Dies ist nicht mehr auf dem neuesten Stand. Sie benutzen CMake jetzt. Wie funktioniert es dort? – Albert