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

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Сборка GNU toolchains, может кто подсказать?
Krom
сообщение May 13 2008, 09:05
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Озадачился я самостоятельной сборкой gnu toolchains.

В Линуксе я мягко говоря новичок, поэтому пару недель ушло на поиск и усвоение информации про
что и как делать. Использую дистрибутив Debian Etch 4.0r1, в нем присутствуют свои заморочки,
но в принципе разобрался. Много чего почерпнул на этом форуме, но осталось пару непоняток.
Прошу знающих людей разъяснить, в свою очередь обязуюсь написать подробный манул по сборке,
потому как проити через такое оно конечно и полезно в плане навыков, но времени и нервов на
это уходит масса.

Итак, вопросы.
1. По сборке binutils вопросов нет, разобрался.
2. Далее рекомендуется собрать gcc c опцией --without-headers, потом с помощью собранного gcc
собрать newlib, и уже потом пересобрать gcc заново. Вот здесь я и застопорился. После
двухдневных плясок с бубном gcc-4.3 я собрал:

/usr/local/arm/src/build/gcc-4.3/src/configure --prefix=/usr/local/arm --target=arm-elf --disable-nls
--disable-werror --enable-threads --disable-shared --disable-win32-registry --enable-languages=c
--enable-interwork --enable-multlib --with-float=soft --disable-libssp --with-newlib --without-headers
make
make install

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

CC=arm-elf-gcc ./configure --target=arm-elf --prefix=/usr/local/arm --enable-interwork --enable-multlib

так ругаецца, говорит, что указанный компиллятор не может создавать исполняемые файлы sad.gif.
Оно вроде бы как и понятно,собран с опцией --target=arm-elf, то есть будет генерировать файлы elf,
но тогда как надо? И нужен ли вообще этот этап?

Таким вот макаром

./configure --target=arm-elf --prefix=/usr/local/arm --enable-interwork --enable-multlib

нормально конфигурится и затем собирается. Но это я так понимаю с помощью системного gcc. Может,
так и надо?
Go to the top of the page
 
+Quote Post
Andy Great
сообщение May 13 2008, 09:13
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057



Дык Вы загляньте в Makefile после ./configure. Там написано какой компилер прописывается.
Go to the top of the page
 
+Quote Post
amw
сообщение May 13 2008, 09:18
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Krom @ May 13 2008, 12:05) *
Озадачился я самостоятельной сборкой gnu toolchains.

В Линуксе я мягко говоря новичок, поэтому пару недель ушло на поиск и усвоение информации про
что и как делать. Использую дистрибутив Debian Etch 4.0r1, в нем присутствуют свои заморочки,
но в принципе разобрался. Много чего почерпнул на этом форуме, но осталось пару непоняток.
Прошу знающих людей разъяснить, в свою очередь обязуюсь написать подробный манул по сборке,
потому как проити через такое оно конечно и полезно в плане навыков, но времени и нервов на
это уходит масса.

Вот тут http://electronix.ru/forum/index.php?showt...mp;#entry409582 я выкладывал набор скриптов и патчей для сборки. Я делал ӕто под Debian/Lenny amd64 но не вижу причин, почему бы ӕто не работало в Etch.
Цитата
Итак, вопросы.
1. По сборке binutils вопросов нет, разобрался.
2. Далее рекомендуется собрать gcc c опцией --without-headers, потом с помощью собранного gcc
собрать newlib, и уже потом пересобрать gcc заново. Вот здесь я и застопорился. После
двухдневных плясок с бубном gcc-4.3 я собрал:

Пока могу посоветовать gcc-4.2. С версией 4.3 еще не все в порядке в смысле ARM.
Цитата
/usr/local/arm/src/build/gcc-4.3/src/configure --prefix=/usr/local/arm --target=arm-elf --disable-nls
--disable-werror --enable-threads --disable-shared --disable-win32-registry --enable-languages=c
--enable-interwork --enable-multlib --with-float=soft --disable-libssp --with-newlib --without-headers
make
make install

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

CC=arm-elf-gcc ./configure --target=arm-elf --prefix=/usr/local/arm --enable-interwork --enable-multlib

так ругаецца, говорит, что указанный компиллятор не может создавать исполняемые файлы sad.gif.
Оно вроде бы как и понятно,собран с опцией --target=arm-elf, то есть будет генерировать файлы elf,
но тогда как надо? И нужен ли вообще этот этап?

По моим наблюдениям - не обязательно в случае arm-elf. Но в общем случае gcc должен "знать" libc и потому во всех случаях настоятельно рекомендуется компилить gcc дважды. Кроме того, если захотите C++ то почти без вариантов.
Цитата
Таким вот макаром

./configure --target=arm-elf --prefix=/usr/local/arm --enable-interwork --enable-multlib

нормально конфигурится и затем собирается. Но это я так понимаю с помощью системного gcc. Может,
так и надо?

Есть такая проблема. Оно пытается пртотестиь на наличие либы, для чего пытается линковать, а newlib еще нет и потому нет ни одного crt0.o. Смотрите там в патчах.

Сообщение отредактировал amw - May 13 2008, 09:22


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Krom
сообщение May 13 2008, 09:50
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Цитата(amw @ May 13 2008, 13:18) *
Вот тут http://electronix.ru/forum/index.php?showt...mp;#entry409582 я выкладывал набор скриптов и патчей для сборки. Я делал ӕто под Debian/Lenny amd64 но не вижу причин, почему бы ӕто не работало в Etch.


Спасибо, посмотрю обязательно. Насчет патчей - все исходники я брал из репозитария Дебиан,
там тоже есть какие-то патчи. Указанные Вами патчи все равно надо ставить?

По скриптам: в tools.sh видно, что после binutils собирается промежуточная версия gcc с помощью скрипта gcc_bare.sh, а затем скриптом newlib.sh собираются newlibы. Я посмотрел этот скрипт, и нигде не увидел, где задается, каким gcc они собираются. Ткните носом если не сложно smile.gif

Да, и вопрос - исходники можно таки брать из репозитария Дебиана?
Go to the top of the page
 
+Quote Post
amw
сообщение May 13 2008, 10:00
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Krom @ May 13 2008, 12:50) *
Спасибо, посмотрю обязательно. Насчет патчей - все исходники я брал из репозитария Дебиан,
там тоже есть какие-то патчи. Указанные Вами патчи все равно надо ставить?

Я всегда беру исходники toolchain с gnu.org
http://ftp.gnu.org/gnu/binutils/
http://ftp.gnu.org/gnu/gcc/
http://ftp.gnu.org/gnu/glibc/
http://ftp.gnu.org/gnu/gdb/
ftp://sources.redhat.com/pub/glibc/releases
http://sourceware.org/newlib/
http://sourceware.org/insight/

Мое любимое зеркало smile.gif
ftp://ftp.heanet.ie/mirrors/ftp.gnu.org/gnu/

Цитата
По скриптам: в tools.sh видно, что после binutils собирается промежуточная версия gcc с помощью скрипта gcc_bare.sh, а затем скриптом newlib.sh собираются newlibы. Я посмотрел этот скрипт, и нигде не увидел, где задается, каким gcc они собираются. Ткните носом если не сложно smile.gif

Ну так в архиве есть папка scripts. Там все и прописано. В tools.sh в начале общие и управляющие переменные.
Обратите внимание на
Код
BINUTILS=0
GCC_BARE=0
NEWLIB=0
GCC=0
GDB=0
INSIGHT=1

Где зачение = 1 тулса собирается, 0 - нет. Ӕто для пошаговой сборки. Сначала я собираю одну тулсу. Пока не соберется правильно, потом 1 перемещаю на следующую тулсу и так пока не соберу все. Потом если надо пересобрать все, везде ставлю 1 и собираю все подряд.
Цитата
Да, и вопрос - исходники можно таки брать из репозитария Дебиана?

См. выше.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Krom
сообщение May 13 2008, 10:10
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Ok. Буду дальше разбираться. А какие проблемы в gcc-4.3 в части ARM?
Go to the top of the page
 
+Quote Post
amw
сообщение May 13 2008, 10:21
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Krom @ May 13 2008, 13:10) *
Ok. Буду дальше разбираться. А какие проблемы в gcc-4.3 в части ARM?

Видел в списке рассылки arm.linux.org.uk.
Глюки кодогенератора ARM. Code inconsistency в некоторых случаях. Возможно уже исправили, точно не знаю. Знаю только одно - ARM не является первым в списке продвижения компилера по версиям, потому сначала появляется x86 и его вылизывают в основной ветке, а ARM идет отдельной веткой и несколько запаздывает с включением патчей в основную ветку. В принципе новейший GCC способен генрировать код для любой поддерживаемой архитектуры, но как говорится не всегда он может ӕто делать "в корпусе". Посмотрите на http://gcc.gnu.org/gcc-4.3/ архив списка рассылки и инфу о сатусе и еще в списке рассылки arm.linux.org.uk.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Krom
сообщение May 14 2008, 06:03
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Судя по тому, что поддержка ARMv7 появилась только в этой версии

* Compiler and Library support for Thumb-2 and the ARMv7 architecture has been added.

выбора у меня нет, мне с Cortex M3 надо работать. Так что ничего не поделаешь.
Go to the top of the page
 
+Quote Post
Andy Great
сообщение May 14 2008, 06:38
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057



Возьмите CodeSourcery уже скомпилированный.
Go to the top of the page
 
+Quote Post
Krom
сообщение May 14 2008, 14:00
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Такие вот дела: binutils, gcc и newlib в принципе собрал. Но не совсем так, как хотелось бы sad.gif.
Дело вот чем. Если в файле t-arm-elf перед сборкой откомментировать(я имею в виду--снять символ комментария) только следующие строки:

MULTILIB_OPTIONS += mlittle-endian/mbig-endian
MULTILIB_DIRNAMES += le be
MULTILIB_MATCHES += mbig-endian=mbe mlittle-endian=mle

MULTILIB_OPTIONS += mhard-float/msoft-float
MULTILIB_DIRNAMES += fpu soft
MULTILIB_EXCEPTIONS += *mthumb/*mhard-float*

MULTILIB_OPTIONS += mno-thumb-interwork/mthumb-interwork
MULTILIB_DIRNAMES += normal interwork


то newlib впоследстии собирается без проблем.

Если же вдобавок к ним откомментировать еще и следующие строки
MULTILIB_OPTIONS += march=armv7
MULTILIB_DIRNAMES += thumb2
MULTILIB_EXCEPTIONS += march=armv7* marm/*march=armv7*
#MULTILIB_MATCHES += march?armv7=march?armv7-a
#MULTILIB_MATCHES += march?armv7=march?armv7-r
#MULTILIB_MATCHES += march?armv7=march?armv7-m
#MULTILIB_MATCHES += march?armv7=mcpu?cortex-a8
#MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4
MULTILIB_MATCHES += march?armv7=mcpu?cortex-m3

то при сборке newlib выдает следующую ошибку:

make[9]: Entering directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/newlib/libc/machine/arm'
arm-elf-gcc -B/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/newlib/ -isystem /usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/newlib/targ-include -isystem /usr/local/arm/src/build/newlib-1.16.0/src/newlib/libc/include -B/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/libgloss/arm -L/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/libgloss/libnosys -L/usr/local/arm/src/build/newlib-1.16.0/src/libgloss/arm -mthumb -march=armv7 -O2 -DNO_FLOATING_POINT -DARM_RDI_MONITOR -fno-builtin -mthumb -march=armv7 -c -o lib_a-setjmp.o `test -f 'setjmp.S' || echo '../../../../../../.././src/newlib/libc/machine/arm/'`setjmp.S
../../../../../../.././src/newlib/libc/machine/arm/setjmp.S: Assembler messages:
../../../../../../.././src/newlib/libc/machine/arm/setjmp.S:123: Error: SP not allowed in register list -- `stmea a1!,{v1-v7,fp,ip,sp,lr}'
../../../../../../.././src/newlib/libc/machine/arm/setjmp.S:145: Error: SP not allowed in register list -- `ldmfd a1!,{v1-v7,fp,ip,sp,lr}'
make[9]: *** [lib_a-setjmp.o] Ошибка 1
make[9]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/newlib/libc/machine/arm'
make[8]: *** [all-recursive] Ошибка 1
make[8]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/newlib/libc/machine'
make[7]: *** [all-recursive] Ошибка 1
make[7]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/newlib/libc'
make[6]: *** [all-recursive] Ошибка 1
make[6]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/newlib'
make[5]: *** [all] Ошибка 2
make[5]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/thumb/thumb2/newlib'
make[4]: *** [multi-do] Ошибка 1
make[4]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/newlib'
make[3]: *** [all-multi] Ошибка 2
make[3]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/newlib'
make[2]: *** [all] Ошибка 2
make[2]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0/arm-elf/newlib'
make[1]: *** [all-target-newlib] Ошибка 2
make[1]: Leaving directory `/usr/local/arm/src/build/newlib-1.16.0'
make: *** [all] Ошибка 2
krom-nix:/usr/local/arm/src/build/newlib-1.16.0#


Что за фигня? Сырые newlib? Или еще надо чего-то надо включить? Я использовал newlib-1.16.0-2 из репозитария Дебиан. Может, патчи уже какие были?
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 14 2008, 14:23
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Krom @ May 13 2008, 11:05) *
Озадачился я самостоятельной сборкой gnu toolchains.

Moderator:
Просьба правильно выбирать раздел для постов. Тема перенесена.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
amw
сообщение May 15 2008, 07:30
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Krom @ May 14 2008, 17:00) *
Если же вдобавок к ним откомментировать еще и следующие строки
[i]MULTILIB_OPTIONS += march=armv7
MULTILIB_DIRNAMES += thumb2

А newlib уже дружит с Cortex-ами?


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Andy Great
сообщение May 15 2008, 08:39
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057



klen делает дистрибутивы, так что, похоже, дружит.
Go to the top of the page
 
+Quote Post
Krom
сообщение May 15 2008, 12:34
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Цитата(amw @ May 15 2008, 11:30) *
А newlib уже дружит с Cortex-ами?

По идее дружит, только вот собираться никак не хочет sad.gif Пляски с бубном продолжаются...
Go to the top of the page
 
+Quote Post
klen
сообщение May 15 2008, 14:47
Сообщение #15


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

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



Цитата(Krom @ May 15 2008, 16:34) *
По идее дружит, только вот собираться никак не хочет sad.gif Пляски с бубном продолжаются...


ниче страшного, попляшем и перестанем!
в чем пролема? пошагово соберем!
Go to the top of the page
 
+Quote Post

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

 


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


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