2013-11-02 82 views
0

我有問題交叉編譯一些包含sse指令的C++源代碼。 我設法編譯它們的模擬器(沒有額外的C++標誌),但對ARMv7我得到以下錯誤:蘋果鐺和sse指令形式armv7(移動處理器)

#error "SSE instruction set not enabled" 
(and following other errors such as: 
... unknown type name '__m128' 
) 

我已經調查鐺國旗的標誌,以激活SSE指令,但沒有找到

(即我試圖編譯源文件是gdalgrid.cpp項目@中, http://fossies.org/dox/gdal-1.10.1/gdalgrid_8cpp_source.html

THX提前

+2

'流式SIMD擴展(SSE)是x86體系結構的SIMD指令集擴展'。注意'x86',而不是'ARM7' –

+1

也許這ifdef'#ifdef HAVE_SSE_AT_COMPILE_TIME'? –

+0

ARM確實有SIMD指令,稱爲「Neon」指令,但它們不是SSE指令,並且我非常確定這些指令的內置函數是不同的(儘管我從未真正嘗試過使用它們)。 –

回答

0

類似概率LEM;嘗試編譯「讓」的ARM7硬件的altcoin錢包應用,gcc編譯器彈出與

/usr/share/gccxml-0.9/GCC/4.7/xmmintrin.h:32:3: error: #error "SSE instruction 
set not enabled" 
src/scrypt_mine.cpp: In function ‘void* scrypt_buffer_alloc()’: 
src/scrypt_mine.cpp:66:19: error: ‘SCRYPT_BUFFER_SIZE’ was not declared in this scope 
src/scrypt_mine.cpp: In function ‘void scrypt(const void*, size_t, uint32_t*, void*)’: 
src/scrypt_mine.cpp:87:21: error: ‘scrypt_core’ was not declared in this scope 
Makefile:1909: recipe for target 'build/scrypt_mine.o' failed 
make: *** [build/scrypt_mine.o] Error 1 

我的想法是怎麼回事是scrypt的一些實現得到做成這樣完全依賴於SSE指令上一個品牌的CPU,他們不會爲另一個編譯。

現在,解決方案需要萊特幣人員提供更好的答案,因爲我的工作僅適用於比特幣和其他sha256d硬幣: 溝通任何基於scrypt的硬幣,因爲這些硬幣僅限於特定品牌的cpu sse。編譯基於sha256d的硬幣,因爲這些硬幣更便攜,錢包可以在ARM7設備上工作,包括覆盆子pi。

+1

FYI,[SSE](https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions)是一組[SIMD](https://en.wikipedia.org/ wiki/SIMD)的x86指令。我想當你在這裏說「sse」時,你真正的意思是SIMD。 SIMD是通用術語,SSE是一個特定的實現(對於x86)。這是一個小挑逗,但這些小細節確實有所作爲。 – Cornstalks