Разбираюсь с кросскомпиляцией пакета, нашел интересное и понятное объяснение отличий опиций 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