2013-11-02 41 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