Ask Your Question

Clark's profile - activity

2014-01-28 10:22:37 -0600 received badge  Necromancer (source)
2014-01-28 09:31:21 -0600 received badge  Editor (source)
2014-01-28 09:29:49 -0600 answered a question Linker error when building 2.4.7 with IPP 8.0

Well, I have compilation working (have not actually run a program yet though.) That said, the inclusion of the lib-irc, imf, and svml libraries seemed to work. I also needed to change the CMake file from looking for the static versions to looking for the .so versions. I am pasting the diff between the original and my modified "OpenCVFindIPP.cmake" file below.

Besides the CMake file, the original IPP search seemed to find a different directory than what was actually needed. I'm not sure what exactly IPP is putting in each directory, but for me it installed both a "composer_xe_2013_sp1" and "composer_xe_2013_sp1.0.080" directory. The cmake found the first directory by default, but the required .so files are only in the .0.080 directory. So I changed the "IPP_H_PATH" using the CMAKE gui.

Hope this helps. I should mention that this is with 2.4.8, not 2.4.7. The problem is a change in IPP though, I believe.


35c35
< set(IPP_LIB_SUFFIX  ${CMAKE_STATIC_LIBRARY_SUFFIX})
---
> set(IPP_LIB_SUFFIX  ${CMAKE_SHARED_LIBRARY_SUFFIX})
166a167,169
>   ${IPP_LIB_PREFIX}irc${IPP_SUFFIX}${IPP_LIB_SUFFIX}
>   ${IPP_LIB_PREFIX}imf${IPP_SUFFIX}${IPP_LIB_SUFFIX}
>   ${IPP_LIB_PREFIX}svml${IPP_SUFFIX}${IPP_LIB_SUFFIX}
216c219,225
<       set(IPP_LIBRARY_DIRS ${IPP_ROOT_DIR}/lib/intel64 PARENT_SCOPE)
---
>       if(NOT EXISTS ${IPP_ROOT_DIR}/../compiler/lib/intel64)
>            message(SEND_ERROR "IPP EM64T libraries not found")
>       endif()
>       set(IPP_LIBRARY_DIRS 
>         ${IPP_ROOT_DIR}/lib/intel64 
>         ${IPP_ROOT_DIR}/../compiler/lib/intel64
>         PARENT_SCOPE)
2014-01-27 16:07:28 -0600 received badge  Supporter (source)
2014-01-27 16:07:10 -0600 commented question Linker error when building 2.4.7 with IPP 8.0

I am having the same issue. It appears as if it occurs because the intel compiler knows where some internal libraries are, but you are using traditional ld. Finding the right libraries (so far, irc, imf, and svml appear to be needed) and adding them to the compiler options seems to get further in the compilation process. I don't have it all the way working yet though. If I do, I will post my modified cmake file.