Решено:что определяет CHOST в make.conf

Sabayon, Calculate, Funtoo, Exherbo

Модератор: /dev/random

Аватара пользователя
Fatal
Сообщения: 49
ОС: UNIX

Решено:что определяет CHOST в make.conf

Сообщение Fatal »

Доброго времени суток!
Хотелось бы узнать зачем нужен CHOST.
Понятно, что он определяет платформу. Но почему он может быть только i386, i586 или i686. Тогда как -match может принимать значения pentium, pentium-m и так далее. В чём разница между CHOST и march?
Вот man по make.conf, но в секции про CHOST там куча ссылок на man gcc, в котором описывается куча параметров и не описывается как они связаны с CHOST.
Вот ещё интересный сайтик, в котором опсываются рекомендации по флагам для компиляции под различные платформы. К примеру, там написано
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"


в CFLAGS архитектура ставиться pentium4, а CHOST так и остаётся i686, почему?
Спасибо сказали:
Аватара пользователя
Виталмий
Сообщения: 468
Статус: Любитель
ОС: Gentoo Linux

Re: Решено:что определяет CHOST в make.conf

Сообщение Виталмий »

В переменной CHOST определяется, для какой архитектуры скомпилирована система.
linux-2.6.17-gentoo-r5 x86 on AMD Athlon XP 2000+
OpenSuse 11.0 x86_64 on Sony VNG-FZ31ER
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Решено:что определяет CHOST в make.conf

Сообщение serzh-z »

Фактически CHOST определяет тип используемого компилятора. Что означает, что gcc собранный для i386 (CHOST="i386-pc-linux-gnu") не сможет произвести бинарь для x86_64 (CHOST="x86_64-pc-linux-gnu"). Для каждой конкретной сборки (архитектуры, типа) компилятора доступен свой набор оптимизирующих флагов (CFLAGS, CXXFLAGS).
Спасибо сказали:
Аватара пользователя
Fatal
Сообщения: 49
ОС: UNIX

Re: Решено:что определяет CHOST в make.conf

Сообщение Fatal »

как я понимаю i386-pc-linux-gnu составное имя. i386-pc-linux-gnu:
1. i386 - архитектура
2. pc - P.C. - какой здесь может быть выбор ещё?
3. linux-gnu - какой здесь может быть выбор ещё?

странно, что это нигде не описывается.

первый пункт определяет архитектуру процессора. если верить мануалу по gcc, то у него существует ещё и другие архитектуры для платформы x86, кроме i*86. Например, pentium3, pentium-m, pentiumpro, pentium4. Но почему выбирается в CHOST для платформы x86, только i*86?

Люди поделитесь, пожалуйста, где можно прочитать об этом, или расскажите, если знаете.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Решено:что определяет CHOST в make.conf

Сообщение serzh-z »

2. Про PowerPC, например, не слышали?
3. BSD, например.

Не могу понять - какой еще вам нужен ответ?

Если взять две машины, скажем с GNU/Linux (проц. какой-нибудь x86 с набором инструкций i686) и FreeBSD (проц., пусть будет, просто AMD64), собрать на каждой их них GCC, то будем иметь два GCC, примерно с такими CHOST:

- i686-pc-linux-gnu
- x86_64-pc-bsd

Теперь запихнем это все на третью машину с процессором x86 из семества i386. Можно будет использовать два GCC (т.е., в случае Gentoo, указывать CHOST как первый, так и второй). Все. Правда запускаться, на этой машине, оба компилятора не будут. Надеюсь, что разжевал.
Спасибо сказали:
Аватара пользователя
Poor Fred
Сообщения: 1575
Статус: Pygoscelis papua
ОС: Gentoo Linux, FreeBSD

Re: Решено:что определяет CHOST в make.conf

Сообщение Poor Fred »

А как перейти с i386-* на i686-*? Т.к. стадии есть только x86, а i686 тянуть жаба душит.
Попробовал со стадии 1 начать, там тоже i386.

И вообще, стОит ли? Это же указание на компилятор, а не команды сборки, насколько я понимаю...
Убить всех человеков!
Спасибо сказали:
Аватара пользователя
Fatal
Сообщения: 49
ОС: UNIX

Re: Решено:что определяет CHOST в make.conf

Сообщение Fatal »

спасибо, serzh-z! В этом направлении мне понятно, что
gcc собранный для i386 (CHOST="i386-pc-linux-gnu") не сможет произвести бинарь для x86_64 (CHOST="x86_64-pc-linux-gnu"). Для каждой конкретной сборки (архитектуры, типа) компилятора доступен свой набор оптимизирующих флагов (CFLAGS, CXXFLAGS)


1. Возможно ли написать так, pentium4-pc-linux-gnu? Почему нет если нет.
2. i386 понятно, что определяет архитектуру процессора. А что определяет pc и linux-gnu?

Спасибо, всем кто помогает мне разобраться с этими ключами!
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Решено:что определяет CHOST в make.conf

Сообщение serzh-z »

1. Можно, если у вас есть в системе такой профиль GCC.

Poor Fred
CHOST, как и написано в хендбуке, можно менять лишь для stage1. Т.е. на том этапе, когда самый первый (gcc из stage1 не в счет) компилятор будет собираться с помощью bootstrap*.sh.

Возможно, что я не совсем прав - но, увы, не могу этого сейчас проверить.
Спасибо сказали:
Аватара пользователя
Fatal
Сообщения: 49
ОС: UNIX

Re: Решено:что определяет CHOST в make.conf

Сообщение Fatal »

2. i386 понятно, что определяет архитектуру процессора. А что определяет pc и linux-gnu?

я не совсем вопрос корректно поставил

если i386 это определяет инструкции, которыми будет компилироваться машиный кода. То тогда, что определяет pc и linux-gnu? Можно предположить, что linux-gnu будет определять что-то, что связано с системными вызовами в линукс... а что тогда pc определяет?
Спасибо сказали:
Аватара пользователя
Poor Fred
Сообщения: 1575
Статус: Pygoscelis papua
ОС: Gentoo Linux, FreeBSD

Re: Решено:что определяет CHOST в make.conf

Сообщение Poor Fred »

serzh-z писал(а):
16.11.2006 15:29
CHOST, как и написано в хендбуке, можно менять лишь для stage1. Т.е. на том этапе, когда самый первый (gcc из stage1 не в счет) компилятор будет собираться с помощью bootstrap*.sh.

Возможно, что я не совсем прав - но, увы, не могу этого сейчас проверить.

Да, все правильно. Пытался сначала впереди паровоза бежать, т.е. без bootstrap, у меня и собирался компилятор 386-й. Теперь все ок.
Убить всех человеков!
Спасибо сказали: