В файле /usr/local/portage/layman/calculate/profiles/calculate/make.conf/amd64/make.defaults написано CFLAGS="-O2 -march=k8 -pipe"
. Атлоны, конечно, хорошо, но для Core2
, как у меня, это не подходит. В Gentoo
по дефолту стоит CFLAGS="-O2 -pipe"
. Чё буим делать?
Ну так x86_64 это технология разработанная AMD (вспомним историю), которую интел 1 в 1 применяет у себя.
Когда мы выбираем как компилировать под 32 бита, что мы включаем? - i686, потому что таким образом мы сохраняем совместимость. Так и здесь.
После установки Вы уже можете пересобрать все пакеты под Core2. Благо march уже будет иметь значение “native”.
P.S. На вопрос “что делать?” есть короткий ответ - радоваться жизни, что интел не пошла своим путём
Alexander Tratsevskiy wrote:
Ну так x86_64 это технология разработанная AMD (вспомним историю), которую интел 1 в 1 применяет у себя.
Когда мы выбираем как компилировать под 32 бита, что мы включаем? - i686, потому что таким образом мы сохраняем совместимость. Так и здесь.
После установки Вы уже можете пересобрать все пакеты под Core2. Благо march уже будет иметь значение “native”.P.S. На вопрос “что делать?” есть короткий ответ - радоваться жизни, что интел не пошла своим путём
Хм. i686 - это PentiumPro, который “держат” и Intel и AMD. Смущает K8 (Athlon64). Не думаю что он на 100% совместим с -march=nocona,core2 и т.д. В Catalyst’е для общей x86_64 архитектуры я{в,с}но прописано "-O2 pipe" и core2 c k8 для него разные. Ежу понятно, что “технология x86_64” не одно и то же, что ABI для Core2 и Athlon64. >:-E
Если на Вашем Core2 что-либо работает некорректно, напишите. Зачем ежа в пример приводить.
Позиция ясна. Придёться править make.defaults
после каждого обновления :-
Зачем же так? У Вас есть файл /etc/make.conf, в котором после установки системы прописано:
CFLAGS="-O2 -march=native -pipe"
Alexander Tratsevskiy wrote:
Зачем же так? У Вас есть файл /etc/make.conf, в котором после установки системы прописано:
> CFLAGS="-O2 -march=native -pipe"
запускаем emerge --info
...
CFLAGS="-O2 -march=native -pipe"
...
CXXFLAGS="-O2 -pipe"
^^^^^^^^^
...
Надо либо дописать CXXFLAGS="${CFLAGS}"
, либо как в gentoo:
CFLAGS="-O2 -pipe"
CXXFLAGS="-O2 -pipe"*
Представте “зоопарк” 64-разрядных машин, где присутствует весь спектр 64-разрядных проессоров и от Интел и от АМД. А Вы - *march=k8* :)
Про CXXFLAGS спасибо. Планируем исправить обновлением 10.0.0.
Представте “зоопарк” 64-разрядных машин, где присутствует весь спектр 64-разрядных проессоров и от Интел и от АМД. А Вы - *
march=k8* :)
AMD поддерживает mmx, sse инструкции. Почему Вы полагаете что intel будет не корректно работать с k8? Есть какой-то материал по этому поводу?
Для начала: gcc info 3.17.14 Intel 386 and AMD x86-64 Options:
`-mtune=CPU-TYPE'
Tune to CPU-TYPE everything applicable about the generated code,
except for the ABI and the set of available instructions.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
While picking a specific CPU-TYPE will schedule things
appropriately for that particular chip, the compiler will not
generate any code that does not run on the i386 without the
`-march=CPU-TYPE' option being used.
`-march=CPU-TYPE'
Generate instructions for the machine type CPU-TYPE. The choices
for CPU-TYPE are the same as for `-mtune'. Moreover, specifying
`-march=CPU-TYPE' implies `-mtune=CPU-TYPE'.
_core2_
Intel Core2 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3
and SSSE3 instruction set support.
_k8, opteron, athlon64, athlon-fx_
AMD K8 core based CPUs with x86-64 instruction set support.
(This supersets MMX, SSE, SSE2, 3dNOW!, enhanced 3dNOW! and
64-bit instruction set extensions.)
SSE3, SSSE3 <-> 3dNOW!, enhanced 3dNOW!
Возможно Вы имели ввиду mtune?
Intel announced EM64T, that the technology lacked certain instructions found in the AMD64 instruction set. That's right, there were two: LAHF and SAHF.
At the time, Microprocessor Report analysts speculated that this had happened because Intel based EM64T on a version of AMD's AMD64 documentation written down before AMD incorporated LAHF and SAHF into its own instruction set.
Intel has always admitted EM64T isn't 100 per cent compatible with AMD64
[[http://www.theregister.co.uk/2005/08/23/intel_fixes_em64t/]]
Supported CFLAGS are -O2 -march=k8 -pipe for AMD systems. Intel Core2-based systems (EM64T) should use -O2 -march=core2 -pipe.
http://www.gentoo.org/doc/en/gentoo-amd64-faq.xml\#difference
так что:
dimone none wrote:
Позиция ясна. Придёться править
make.defaults
после каждого обновления :-\n
патч уже в шАрах :-
По поводу -march=native
: стоит у меня Athlon XP, собираю пакеты с -march=native
, то есть -march=athlon-xp
, вышибает мать. Покупаю другую, камень - Pentium III. Оба процика - i686. Дальше догадаться нетрудно. Зачем для i686 оставили совместимость в виде -O2 -march=i686 -pipe
, а для х84_64 - нет? Вот это не даёт покоя.
Много разного слышал, но чтобы опции сборки пакетов влияли на вылет материнки - это впервые. Вы уверены, что вылет матери связан с опциями сборки пакетов ?
shuher none wrote:
Много разного слышал, но чтобы опции сборки пакетов влияли на вылет материнки - это впервые. Вы уверены, что вылет матери связан с опциями сборки пакетов ?
Пытаемся острить? Вам сюда Обсуждение новостей - форум E1.ru По теме: “мать” вышибло статикой, когда “флэшку” втыкал. А вот пересобирать систему пришлось.
З.Ы. /usr/calculate/share/profile ставит всё на свои места.
З.Ы.Ы. Это мой Gentoo, и мне его курить.
Готово, заменил на:
CFLAGS="-O2 -march=x86-64 -pipe"
Нет такого параметра у -march
!!! :))) )))-march
вообще убрать надо, но и на том спасибо. при компиляции не ругается и ладно. Ж
Нет такого параметра у
-march
!!! :-)))
А это что?
http://www.tux.in.ua/wp-content/uploads/2010/01/make.conf\_.png
Alexander Tratsevskiy wrote:
Нет такого параметра у
-march
!!! :-)))А это что?
http://www.tux.in.ua/wp-content/uploads/2010/01/make.conf\_.png
Это - самодеятельность
Ставим dev-util/catalyst
Смотрим /usr/lib/catalyst/arch/amd64.py
import builder
class generic_amd64(builder.generic):
"abstract base class for all amd64 builders"
def __init__(self,myspec):
builder.generic.__init__(self,myspec)
self.settings["CHROOT"]="chroot"
class arch_amd64(generic_amd64):
"builder class for generic amd64 (Intel and AMD)"
def __init__(self,myspec):
generic_amd64.__init__(self,myspec)
self.settings["CFLAGS"]="-O2 -pipe"
self.settings["CHOST"]="x86_64-pc-linux-gnu"
self.settings["HOSTUSE"]=["mmx","sse","sse2"]
class arch_nocona(generic_amd64):
"improved version of Intel Pentium 4 CPU with 64-bit extensions, MMX, SSE, SSE2 and SSE3 support"
def __init__(self,myspec):
generic_amd64.__init__(self,myspec)
self.settings["CFLAGS"]="-O2 -march=nocona -pipe"
self.settings["HOSTUSE"]=["mmx","sse","sse2"]
# Requires gcc 4.3 to use this class
class arch_core2(generic_amd64):
"Intel Core 2 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3 support"
def __init__(self,myspec):
generic_amd64.__init__(self,myspec)
self.settings["CFLAGS"]="-O2 -march=core2 -pipe"
self.settings["HOSTUSE"]=["mmx","sse","sse2","ssse3"]
class arch_k8(generic_amd64):
"generic k8, opteron and athlon64 support"
def __init__(self,myspec):
generic_amd64.__init__(self,myspec)
self.settings["CFLAGS"]="-O2 -march=k8 -pipe"
self.settings["CHOST"]="x86_64-pc-linux-gnu"
self.settings["HOSTUSE"]=["mmx","sse","sse2","3dnow"]
class arch_k8_sse3(generic_amd64):
"improved versions of k8, opteron and athlon64 with SSE3 support"
def __init__(self,myspec):
generic_amd64.__init__(self,myspec)
self.settings["CFLAGS"]="-O2 -march=k8-sse3 -pipe"
self.settings["CHOST"]="x86_64-pc-linux-gnu"
self.settings["HOSTUSE"]=["mmx","sse","sse2","3dnow"]
class arch_amdfam10(generic_amd64):
"AMD Family 10h core based CPUs with x86-64 instruction set support"
def __init__(self,myspec):
generic_amd64.__init__(self,myspec)
self.settings["CFLAGS"]="-O2 -march=amdfam10 -pipe"
self.settings["CHOST"]="x86_64-pc-linux-gnu"
self.settings["HOSTUSE"]=["mmx","sse","sse2","3dnow"]
def register():
"inform main catalyst program of the contents of this plugin"
return ({
"amd64" : arch_amd64,
"k8" : arch_k8,
"opteron" : arch_k8,
"athlon64" : arch_k8,
"athlonfx" : arch_k8,
"nocona" : arch_nocona,
# uncomment when gcc 4.3 is stable and delete this line
# "core2" : arch_core2,
# "k8-sse3" : arch_k8_sse3,
# "opteron-sse3" : arch_k8_sse3,
# "athlon64-sse3" : arch_k8_sse3,
# "amdfam10" : arch_amdfam10,
# "barcelona" : arch_amdfam10
}, ("x86_64","amd64","nocona"))
Наблюдаем разницу. Класса arch_x86-64 не наблюдаем.
P.S. Каталистом парни в Генту собирают стэйджи.
Хорошо, тогда наберите в гугле: “-march=x86-64” и “-march=x86_64” (в кавычках). По первому результату страниц будет будет найдено в 180 раз больше.
Alexander Tratsevskiy wrote:
Хорошо, тогда наберите в гугле: “-march=x86-64” и “-march=x86_64” (в кавычках). По первому результату страниц будет будет найдено в 180 раз больше.
Google != Gentoo way :)))