2013-05-28 3 views
3

Я пытаюсь скомпилировать opencv 2.4.5 на Ubuntu (12.10) с TBB и IPP 7.1. Я использую CMake для настройки мейкфайлов, с помощью этой команды:Компиляция OpenCV 2.4.5 с IPP 7.1 в Linux

cmake -D WITH_TBB=ON -D WITH_IPP=ON ../opencv-2.4.5 

После previosly установить переменную IPPROOT:

setenv IPPROOT=/opt/intel/ipp/ 

(Документация гласит USE_IPP вместо WITH_IPP, но это неверно, так как CMake отпечатки ., что она не принимает во внимание переключатель) утилита CMake, кажется, признает библиотеки IPP и печатает:

... 
-- found IPP: 7.1.1 [7.1.1] 
-- at: /opt/intel/composerxe/ipp 
-- IPP libs: libippvm_l.a;libippcc_l.a;libippcv_l.a;libippi_l.a;libipps_l.a;libippcore_l.a 
... 
-- Other third-party libraries: 
--  Use IPP:      7.1.1 [7.1.1] 
--   at:      /opt/intel/composerxe/ipp 

Cmake успешно, и так делает сборку (make). Проблема заключается в том, что выходные файлы не связаны с IPP каким-либо образом, и на самом деле то же самое, как если бы построен без IPP, используя

cmake -D WITH_TBB=ON ../opencv-2.4.5 

(IPP по умолчанию выключена).

Кто-нибудь смог успешно построить OpenCV, чтобы он фактически использовал IPP?

+0

Вы когда-нибудь находили решение? – Aly

ответ

0

У меня такая же проблема: настройка opencv с включенной опцией IPP, поиск библиотек, компиляция без ошибок, но ничего не происходит - она ​​не связана с ней.
Вот ldd результата:

# ldd /usr/local/opencv-246-ipp/lib/libopencv_core.so 
linux-vdso.so.1 => (0x00007fff563ab000) 
libz.so.1  => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f70dee83000) 
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f70dec66000) 
librt.so.1  => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f70dea5d000) 
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f70de75a000) 
libm.so.6  => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f70de455000) 
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f70de23e000) 
libc.so.6  => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f70dde76000) 
/lib64/ld-linux-x86-64.so.2 (0x00007f70dfc55000) 

Я подумал, что из-за связывания статический, но это не влияет на результат, я получил то же самое время исполнения (с и без опции IPP) ,

Но!

Я построил последнюю версию (OpenGL) OpenCV для новой (8.0) версии IPP, и она работает.

Linking:

otool -L /usr/local/opencv/lib/libopencv_core.3.0.0.dylib 
/usr/local/opencv/lib/libopencv_core.3.0.0.dylib: 
lib/libopencv_core.3.0.dylib (compatibility version 3.0.0, current version 3.0.0) 
./libippvm-8.0.dylib (compatibility version 8.0.0, current version 8.0.0) 
./libippcc-8.0.dylib (compatibility version 8.0.0, current version 8.0.0) 
./libippcv-8.0.dylib (compatibility version 8.0.0, current version 8.0.0) 
./libippi-8.0.dylib (compatibility version 8.0.0, current version 8.0.0) 
./libipps-8.0.dylib (compatibility version 8.0.0, current version 8.0.0) 
./libippcore-8.0.dylib (compatibility version 8.0.0, current version 8.0.0) 
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 60.0.0) 
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1) 

Но она по-прежнему не влияет на результат (в моем случае), время выполнения операции изменения размеров не изменяется.

Надеюсь, что это поможет кому-то.

Смежные вопросы