我正在尝试使用icc在Linux上编译OpenCV,以便用intel工具分析执行情况。
我使用默认选项安装了最新版本的icc。我尝试了“用户”(icc安装在我的家中)和“sudo”(icc安装在/ opt中)安装。 icc的版本是11.1 20090630
我还想过来源iccvars.sh,为PATH和LD_LIBRARY_PATH添加所需的路径
我还尝试了几个版本的OpenCV: - 主要的一个:pre1.1。 configure根本不识别icc - 'latest_tested_snapshot'和'trunk'版本:icc被configure很好地识别(--enable-openmp产生-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
我有人成功用icc编译OpenCV,请告诉我!
答案 0 :(得分:1)
好的,我终于用ICC编译了OpenCV。 OpenCV与英特尔很接近,因为英特尔高度参与了这个项目。从版本1.1开始,OpenCV本身就支持icc编译器。当你在configure中指定CC = icc时,随着-fopenmp
(gcc样式)转换为-openmp
(icc样式),会有一些细微的变化。然而,在OpenCV 1.1(这是最新的稳定版)和现在的发布之间,icc已经发展。我认为它曾用于以前版本的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产生了一些冲突。
答案 1 :(得分:0)
使用与用于创建该库的ICC不同的版本可能会导致您的问题。您必须向图书馆提供商询问使用哪个版本。