Как создать набор инструментов crosstool-ng для Synology DS 214 с DSM 5.1?
Я пытаюсь построить 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
), которая возвращает меня к моей проблеме отсутствия знаний о процессоре и деталях архитектуры - и, конечно, нет никакого способа выяснить, что на самом деле означает "машина"...