Я пытаюсь создать gcc
4.6, который "просто работает" на Synology DS214 с DSM 5.1 (ОС Synology, которая по сути является ужасно устаревшей Linux 3.2.x), т.е. позволяет мне компилировать приложения на коробке. Я испытываю ту же проблему с обоими скомпилированными GCC, созданными с
env CC=/usr/local/arm-marvell-linux-gnueabi/bin/arm-marvell-linux-gnueabi-gcc \
LD=/usr/local/arm-marvell-linux-gnueabi/bin/arm-marvell-linux-gnueabi-ld \
RANLIB=/usr/local/arm-marvell-linux-gnueabi/bin/arm-marvell-linux-gnueabi-ranlib \
AR=/usr/local/arm-marvell-linux-gnueabi/bin/arm-marvell-linux-gnueabi-ar \
CFLAGS=" -I/usr/local/arm-marvell-linux-gnueabi/arm-marvell-linux-gnueabi/libc/include -mhard-float -mfpu=vfpv3-d16" \
LDFLAGS=" -L/usr/local/arm-marvell-linux-gnueabi/arm-marvell-linux-gnueabi/libc/lib" \
auto-apt run ./configure --host=arm-marvell-linux --target=arm-marvell-linux \
--prefix=$USER/syno-prefix --disable-shared --enable-obsolete
make
make install
с набором инструментов Synology в Ubuntu 14.10 amd64 и рекомендуемыми параметрами для процессора armadaxp
и набором инструментов crosstools-ng
(сайт проекта) с eglibc
2.18, gcc
4.6.4, linux 3.2.40
и уровнями architecture-level
s armv7-a
и armadaxp
(последнее не работает, ошибка "Неизвестная арка") и настройка процессора для cortex-a9
и CFLAGS
-mhard-float -mfpu=vfpv3-d16"
потому что после нескольких часов поиска единственным указанием на необходимые параметры архитектуры было руководство по компиляции Передача на устройстве MyCloud с armv7l.
Как кросс-скомпилированный gcc
и набор инструментов вызывают ошибку
/usr/local/bin/ld: unrecognised emulation mode: armelf_linux_eabi
Supported emulations: armelf_linux armelf armelfb armelfb_linux
collect2: ld returned 1 exit status
(в config.log
) при компиляции, например, binutils
2.24 и trafficserver
5.1.0 (добавление LDFLAGS=" -marmelf_linux"
до того, как конфигурация вызывает cc1: error: unrecognized command line option '-marmelf_linux'
). Ошибка кажется систематической. Как начать выяснять конкретные аппаратные параметры для параметров набора инструментов в целом и в особенности для обозначенного устройства?
Некоторые сведения о цели, где должен запускаться gcc
:
# cat /proc/cpuinfo
Processor : Marvell PJ4Bv7 Processor rev 2 (v7l)
processor : 0
BogoMIPS : 1064.96
processor : 1
BogoMIPS : 1064.96
Features : swp half thumb fastmult vfp edsp vfpv3 tls
CPU implementer : 0x56
CPU architecture: 7
CPU variant : 0x2
CPU part : 0x584
CPU revision : 2
Hardware : Marvell Armada XP Development Board
Revision : 0000
Serial : 0000000000000000
Я пытался начать с чтения о ARM и единицах с плавающей запятой (в основном в Википедии), но для того, чтобы угадать, какие параметры необходимы, нужно много для начала.
РЕДАКТИРОВАТЬ 1: Я только что понял, что было бы хорошо, чтобы установить параметр Toolchain type
на Canadian
а не Cross
, но тогда я все еще crosstools-ng
требует, чтобы была установлена опция machine
(сбой с ошибкой Invalid configuration `': machine `' not recognized
), что возвращает меня к проблеме отсутствия знаний о процессорах и деталях архитектуры - и, конечно, нет способа выяснить, что на самом деле означает "машина" ...