LINUX.ORG.RU

оптимизация с march=native

 


0

1

Собрал себе бинарный пакет asterisk на процессоре celeron, а запускать надо в том числе и на атоме. Вылетает с ошибкой invalid opcode.

Нашел в инете некую команду

 echo | gcc -dM -E - -march=native
Изучение ее выхлопа показало что у атома нет следующих строк
 #define __SSE4_1__ 1
 #define __SSE4_2__ 1
 #define __PCLMUL__ 1

Вопрос это можно как-то аккуратно отключить чтобы мне не плодить бинарные сборки

★★

Проще всего...

На мой взгляд, пересобрать на атоме и для атома.

Moisha_Liberman ★★
()

-march=core2
core2
Intel Core2 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3 instruction set support.
atom
Intel Atom CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3 instruction set support.
Или оставить generic или i686

CrazyAlex25 ★★★
()
Последнее исправление: CrazyAlex25 (всего исправлений: 2)

Эм, а зачем конпелять с march=native если запуск планируется на generic платформе?

ну в качестве костыля можешь передать системе сборки три -UYOUR_DEFINE_HERE флага

Stil ★★★★★
()
Последнее исправление: Stil (всего исправлений: 1)
Ответ на: комментарий от Stil

Эм, а зачем конпелять с march=native если запуск планируется на generic платформе?

не знаю зачем, скрипт configure так решил, я и там и там планирую запускать. Вобщем я нашел переменную среды BUILD_CFLAGS в которую можно подсунуть ключи компилятора, осталось найти сами ключи

Yur4eg ★★
() автор топика
Ответ на: комментарий от Yur4eg

осталось найти сами ключи

Тебе уже писали выше - -march=pentium4

Stil ★★★★★
()
Ответ на: комментарий от Yur4eg

Ну или -march=pentium если использование антикварных доисторических процессоров тоже возможно

Stil ★★★★★
()
Ответ на: комментарий от Stil

ну в качестве костыля можешь передать системе сборки три -UYOUR_DEFINE_HERE флага

Ну вообще-то то что ты что-то раздефайнишь никак не повлияет на то что код всё равно будет собираться с sse4.

slovazap ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.