我正在尝试在Linux上用icc编译OpenCV,以便用英特尔工具分析执行情况。
我使用默认选项安装了最新版本的icc。我尝试了安装"user“(icc安装在我家里)和"sudo”(安装在/opt中)。icc的版本是11.1 20090630
我还考虑了源码iccvars.sh,将需要的路径添加到PATH和LD_LIBRARY_PATH中
我还尝试了OpenCV的几个版本:-主要的一个: pre1.1。configure根本无法识别icc - 'latest_tested_snapshot‘和'trunk’版本: configure可以很好地识别icc (--enable-openmp produce -openmp选项,而不是-fopenmp)
当我编写的时候,一切看起来都很正常,直到编译到一半。然后就会有很多关于“操作符”的警告(也许是上百条)。下面是一个示例:
../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最后是错误:
/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如果有人成功地用国际商会编译了OpenCV,请让我知道!
发布于 2009-08-27 11:57:05
好了,我终于用ICC编译了OpenCV。OpenCV与英特尔关系密切,因为英特尔高度参与了该项目。从1.1版本开始,OpenCV应该本机支持icc编译器。当您在configure中指定CC=icc时,会有一些细微的变化,因为-fopenmp (gcc样式)会转换为-openmp (icc样式)。然而,从ICC1.1(这是最新的稳定版)发布到现在,OpenCV已经发生了变化。我想它过去是用以前版本的icc编译的。
它与svn上的最新测试版本https://opencvlibrary.svn.sourceforge.net/svnroot/opencvlibrary/tags/latest_tested_snapshot/opencv/相一致。
随着svn的发展,它可能会改变,但在这个时候(8月27日)它是有效的。警告仍然在这里(不要害怕,有很多)。下面是我的配置bash行:
./configure --prefix=/home/user/opencv/icc CC=icc CXX=icpc --enable-openmp --disable-apps --disable-optimization --disable-sse我禁用了优化和sse指令,因为它会与icc产生一些冲突。
发布于 2009-08-13 21:55:26
您的问题可能是因为使用了用于创建该库的ICC的不同版本。您必须向库提供商询问要使用哪个版本。
https://stackoverflow.com/questions/1271797
复制相似问题