реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Сборка ядра кросс-компилятором GCC под ARM
Impossibility
сообщение Jan 24 2012, 08:20
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 7-11-11
Пользователь №: 68 176



При сборке ядра кросс-компилятором под ARM выдаются ошибки.
Вот какие команды подавались:
[niagara@stend1-h11 linux-3.2.1]$ make clean
[niagara@stend1-h11 linux-3.2.1]$ make ARCH=arm defconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
*** Default configuration is based on 'versatile_defconfig'
#
# configuration written to .config
#
[niagara@stend1-h11 linux-3.2.1]$ make ARCH="arm" CROSS_COMPILE="arm-eabi-" zImage modules
Вот какая ошибка выдается:
Kernel: arch/arm/boot/Image is ready
AS arch/arm/boot/compressed/head.o
GZIP arch/arm/boot/compressed/piggy.gzip
AS arch/arm/boot/compressed/piggy.gzip.o
CC arch/arm/boot/compressed/misc.o
CC arch/arm/boot/compressed/decompress.o
CC arch/arm/boot/compressed/string.o
AS arch/arm/boot/compressed/lib1funcs.o
LD arch/arm/boot/compressed/vmlinux
arm-eabi-ld: ERROR: arch/arm/boot/compressed/misc.o uses VFP instructions, whereas arch/arm/boot/compressed/vmlinux does not
arm-eabi-ld: failed to merge target specific data of file arch/arm/boot/compressed/misc.o
arm-eabi-ld: ERROR: arch/arm/boot/compressed/decompress.o uses VFP instructions, whereas arch/arm/boot/compressed/vmlinux does not
arm-eabi-ld: failed to merge target specific data of file arch/arm/boot/compressed/decompress.o
arm-eabi-ld: ERROR: arch/arm/boot/compressed/string.o uses VFP instructions, whereas arch/arm/boot/compressed/vmlinux does not
arm-eabi-ld: failed to merge target specific data of file arch/arm/boot/compressed/string.o
make[2]: *** [arch/arm/boot/compressed/vmlinux] Error 1
make[1]: *** [arch/arm/boot/compressed/vmlinux] Error 2
make: *** [zImage] Error 2
Собственно вопрос как избежать этой ошибкиsm.gif
Компилятор собирал сам с использованием newlib
Конфигурация для сборки компилятора:
$DST/$SRCNAME/$GCC_SRC/configure --target=$TARGET --prefix=$PREFIX --enable-languages=c,c++ --without-fp --with-softfloat-support=internal --enable=multilib --with-float=soft --with-gnu-as --with-gnu-ld --with-newlib --with-gxx-include-dir=$PREFIX/$TARGET/include --with-mpfr-lib=/usr/local/lib --with-gmp-lib=/usr/local/lib
где TARGET=arm-eabi (если в качестве цели выбрать arm-elf ошибка таже)
Go to the top of the page
 
+Quote Post
klen
сообщение Jan 27 2012, 07:44
Сообщение #2


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



линкер Вам сообщает что объектники скомпилированы поддержкой инструкций FPU а слинковать образ вы пытаетесь без поддержки оной. Направление решение проблемы - в ключи линкера добавить аналогичные ключи относящиеся к FPU которые проталкиваются при компиляции. По сути линкер в такой ситуации незнает какой набор библиотек линковать с объектниками.
Go to the top of the page
 
+Quote Post
Impossibility
сообщение Jan 30 2012, 05:36
Сообщение #3





Группа: Новичок
Сообщений: 6
Регистрация: 7-11-11
Пользователь №: 68 176



Сейчас я, похоже, выдам свое полное непонимание вопроса..sm.gif
Не могли бы Вы мне еще немного пояснить ситуацию?
Какие ключи, используемые при компиляции, имеются ввиду? Те, что задаются в Makefile при сборке ядра, или те, с кторыми я собирал сам кросс-компилятор (--without-fp --with-softfloat-support=internal, например) ?
И если первый вариант, то ключи к запуску линкера также в Makefile надо добавлять?

Сообщение отредактировал Impossibility - Jan 30 2012, 05:37
Go to the top of the page
 
+Quote Post
klen
сообщение Jan 30 2012, 11:29
Сообщение #4


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



чтобы все было бы понятно приведите ключи компиляции с которыми компилируется файл arch/arm/boot/compressed/misc.o
и ключи с которыми линкуется arch/arm/boot/compressed/vmlinux

у меня подозрение что они отличаются в плане использования fpu. отсюда не видно - надо больше информации

полный лог с ключами достигается компиляцие или ликовковкой с дополнительным ключем -v
Go to the top of the page
 
+Quote Post
Impossibility
сообщение Feb 1 2012, 06:15
Сообщение #5





Группа: Новичок
Сообщений: 6
Регистрация: 7-11-11
Пользователь №: 68 176



Ядро собралось... Смешно сказать, но все заработало после выставления параметра CONFIG_AEABI=y в Kernel Features. Что называется - не надо лезть в дебри, надо проверить не дурак ли ты...
klen, хотелось бы все же поднабраться опыта, если Вы, конечно, не против. Не понял куда надо добавить этот самый ключ -v sad.gif Я сделал вот что: в Makefile в строках
# Make variables (CC, etc...)

AS = $(CROSS_COMPILE)as
LD = $(CROSS_COMPILE)ld -v
CC = $(CROSS_COMPILE)gcc -v
Добавил ключ -v (выделено жирным). После запуска процесса сборки стала вроде вываливаться отладочная информация, но команда grep на нее не реагирует...
Я что-то опять не так делаю?

Сообщение отредактировал Impossibility - Feb 1 2012, 06:16
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Feb 1 2012, 07:47
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Impossibility @ Feb 1 2012, 09:15) *
После запуска процесса сборки стала вроде вываливаться отладочная информация, но команда grep на нее не реагирует...
Я что-то опять не так делаю?
Что именно вы делаете? Выхлоп gcc идёт в stderr, а если вы делаете что-то типа gcc -v | grep , то пайп подключен к stdout, и перенаправлять инфу нужно туда. Попробуйте что-то типа
Код
gcc -v 2>&1 | grep
Go to the top of the page
 
+Quote Post
Impossibility
сообщение Feb 2 2012, 06:28
Сообщение #7





Группа: Новичок
Сообщений: 6
Регистрация: 7-11-11
Пользователь №: 68 176



andrew_b, спасибо, с помощью Вас закрылась еще одна дырка в моей головеsm.gif

А по теме, если кому-то интересно...
Получил логи компиляции и линковки ядра, оказалось, что все дело в ключе -mabi. Он у меня в работающем варианте вот такой: -mabi=aapcs-linux.
Правда я еще не нашел, что же это за магическое сочитание букв - "aapcs-linux", но думаю гугл тут рано или поздно поможетsm.gif

PS klen, благодарю за помощь в получении ценных сведенийsm.gif

Сообщение отредактировал Impossibility - Feb 2 2012, 06:28
Go to the top of the page
 
+Quote Post
xor.kruger
сообщение Feb 9 2012, 10:54
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 290
Регистрация: 17-08-08
Из: Чернигов
Пользователь №: 39 647



2 Impossibility:
А каким кросс-компилятором вы пользовались?
Обычно при использовании CodeSourcery или Buildroot'овского КК никаких подобных проблем не возникает.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 00:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01394 секунд с 7
ELECTRONIX ©2004-2016