TARGET, HOST и BUILD в autoconf

Разбираюсь с кросскомпиляцией пакета, нашел интересное и понятное объяснение отличий опиций target, build и host в autoconf.
--build: это машина на которой вы компиляете.
--host: машина для которой компилируете.
--target: машина для которой GCC сгеренинует бинарник.

Как указано в GCC documentation (Host/Target specific installation notes):

Если build, host и target одинаковые, это называется «нативная компиляция»(native).

Если build, host одинаковые, а target отличается, это называется: кросс-компиляция(cross).

Если build, host, target все разные, это называется канадская компиляция (canadian), назвали так в честь политической партии канады, у которых видимо обещания с делами сильно расходятся ))

Если target и host одинаковые, а build отличается, то вы используете кросс-компиляцию для сборки нативного бинарника для другой системы. (иногда это называют host-x-host, crossed native, или cross-built native.)

Если build и target одинаковые, а host отличается, то вы используете кросс-компилятор, чтобы скомпилять кросс-компилятор, для машины на которой в данный момент компиляете. (Иногда и такое бывает.)

 

PS. Убил кучу времени пытаясь скомпилить i386 код на amd64 системе. После каждой компиляции проверял полученный бинарник с помощью file. В результате получил заветные:

root@host:/home/serp/sbin# file zabbix_agentd
zabbix_agentd: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.24, BuildID[sha1]=0x80351655fa042fd59e60f87c61433eaf9f713e4d, not stripped

Помогло конфигурирование с помощью:

CFLAGS=»-m32″ ./configure —enable-agent —with-mysql —with-net-snmp —enable-static  —prefix=/home/serp/zabbix_compiled —host=i386