簡體   English   中英

在Raspberry Pi 2上使用TBB編譯OpenCV

[英]Compile OpenCV with TBB on Raspberry Pi 2

我已經嘗試使用TBB在Raspberry Pi 2上構建OpenCV,我已經在Pi上從源代碼安裝了TBB,我已經指定了TBB庫到cmake配置的路徑,但是我收到了錯誤:

/home/mihai/tbb43_20150316oss/include/tbb/machine/gcc_armv7.h:31:2:錯誤:#error編譯需要ARMv7-a架構。

我認為錯誤是因為在OpenCV makefile中我必須包含ARMv7的標志

-DTBB_USE_GCC_BUILTINS = 1 -D__TBB_64BIT_ATOMICS = 0

問題是我不知道在哪里包含它。有沒有人有這個問題,abd想分​​享一個解決方案?

我已經解決了它:D。對於有此問題的人,請按照以下步驟操作:

1.轉到文件gcc_armv7.h第31行和注釋行

30 #if !(__ARM_ARCH_7A__)
31 #error compilation requires an ARMv7-a architecture.   
32 #endif

2.在同一個文件gcc_armv7.h中,轉到第56行並替換為

56 #define __TBB_full_memory_fence() 0xffff0fa0  // __asm__ __volatile__("dmb ish": : :"memo    ry")

對於那些想要解釋我是如何做到的人,在第一步之后我得到以下錯誤:

/tmp/ccnkbkfd.s:313: Error: selected processor does not support ARM mode `dmb ish'
/tmp/ccnkbkfd.s:386: Error: selected processor does not support ARM mode `dmb ish'
/tmp/ccnkbkfd.s:533: Error: selected processor does not support ARM mode `dmb ish'
/tmp/ccnkbkfd.s:562: Error: selected processor does not support ARM mode `dmb ish'

我在谷歌上搜索后發現了這個:

The alternative for using dmb is to call the Linux kernel __kuser_memory_barrier

the __kuser_memory_barrier helper operation is found in all ARM kernels 2.6.15 and later
and provide a way to issue a memory barrier that will work across all ARM arch.__kuser_memory_barrier 
helper function found at address 0xffff0fa0

或者你可以跑

sudo make CXXFLAGS="-DTBB_USE_GCC_BUILTINS=1 -D__TBB_64BIT_ATOMICS=0"

而不只是運行

sudo make 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM