2013-05-28 115 views
3

我想用TBB和IPP 7.1編譯Ubuntu(12.10)上的opencv 2.4.5。我使用cmake配置makefile文件,用這個命令:在Linux上用IPP 7.1編譯OpenCV 2.4.5

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

我遇到了同樣的問題:使用啓用IPP選項配置opencv,它查找庫,編譯時沒有錯誤,但沒有任何反應 - 它沒有與它鏈接。
這裏是一個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) 

我想,這是因爲staticly連接,但它不會影響到結果,我已經得到了相同的執行時間(有和沒有IPP選項) 。

但是!

我已經構建了針對新鮮(8.0)版本的IPP的最新(github)版本的OpenCV,它的工作原理。

鏈接:

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) 

但它仍然不影響結果(我的情況),執行時間調整操作不會改變。

希望它能幫助別人。