Apple Clang и SSE инструкции формируют armv7 (мобильные процессоры)

0

У меня есть проблемы с перекрестными компиляциями некоторых источников c++, содержащих инструкцию sse. Мне удается скомпилировать их для симулятора (без дополнительного флага c++), но для armv7 я получаю следующую ошибку:

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

Я заглянул в флаги clang для флага, чтобы активировать sse-инструкции, но не нашел

(исходный файл, который я пытаюсь скомпилировать, - gdalgrid.cpp в проекте gdal, http://fossies.org/dox/gdal-1.10.1/gdalgrid_8cpp_source.html)

спасибо заранее

  • 2
    «Потоковые расширения SIMD (SSE) - это расширение набора инструкций SIMD для архитектуры x86». Примечание: «x86», а не «ARM7»
  • 1
    Может быть, это ifdef '#ifdef HAVE_SSE_AT_COMPILE_TIME'?
Показать ещё 4 комментария
Теги:
clang
armv7
xcode5

1 ответ

0

Аналогичная проблема; пытаясь скомпилировать "make" приложение для кошелька Altcoin на аппаратном оборудовании ARM7, компилятор 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 инструкций на одном бренде процессора, что они не будут компилироваться для другого.

Теперь решение требует лучшего ответа от людей Litecoin, поскольку то, что я получил, применимо только к биткойну и другим монетам sha256d: Ditch любых мошенников на основе scrypt, поскольку они ограничены определенной маркой процессора, которая делает sse. Скомпилируйте монеты на основе sha256d, поскольку они более портативны, и кошельки могут работать на устройствах ARM7, включая малиновый пи.

  • 2
    К вашему сведению, SSE - это группа SIMD- инструкций для x86. Я думаю, что когда вы говорите «sse» здесь, вы на самом деле имеете в виду SIMD. SIMD - это общий термин, SSE - это конкретная реализация (для x86). Это маленький придира, но эти маленькие детали имеют значение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню