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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> arm gcc, кто сам пробовал собирать?
federal
сообщение Oct 30 2013, 18:24
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 74
Регистрация: 12-01-13
Из: Нижний Новгород
Пользователь №: 75 160



Кто нибудь сам собирал gcc?

Всегда используют кросс компилятор. Да, для разработки этого достаточно.
Но, наверное, у многих рано или поздно возникало желание заиметь на отладке родной gcc.

Теперь вопрос, как его собрать?

Гуглил достаточно много, конкретных статей не нашел как это сделать. Много статей именно про кросс тулчейн.

Нашел, что при сборке тулчейна --target должен быть равен --host. А --build = той системе, где происходит сборка.

Хотел узнать у сообщества, как мне собрать такой gcc для арма? чтобы компилятор и запускался на арме и генерировал код для себя же, т.е. для арма.

Можно ли собрать такой компилятор при помощи CodeSourcery?

--
С уважением
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Oct 30 2013, 19:02
Сообщение #2


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

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(federal @ Oct 30 2013, 22:24) *
Кто нибудь сам собирал gcc?

Всегда используют кросс компилятор. Да, для разработки этого достаточно.
Но, наверное, у многих рано или поздно возникало желание заиметь на отладке родной gcc.

Теперь вопрос, как его собрать?

Гуглил достаточно много, конкретных статей не нашел как это сделать. Много статей именно про кросс тулчейн.

Нашел, что при сборке тулчейна --target должен быть равен --host. А --build = той системе, где происходит сборка.

Хотел узнать у сообщества, как мне собрать такой gcc для арма? чтобы компилятор и запускался на арме и генерировал код для себя же, т.е. для арма.

Можно ли собрать такой компилятор при помощи CodeSourcery?

--
С уважением


На Убунту он устанавливается (возможно даже и сразу стоит) командой:
sudo apt-get install gcc

Только кросс-компилятор круче. На более сильном компьютере позволяет быстрее генерировать код.

Еще способ:
Установить LTIB. Фрискейл дают образ диска для виртуальной машины с уже установленным.
Там в конфигурации можно выбрать и скомпилировать.

Другой способ на этом сайте можно заказать построить все что угодно.
http://www.timesys.com/
Go to the top of the page
 
+Quote Post
federal
сообщение Oct 30 2013, 19:04
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 74
Регистрация: 12-01-13
Из: Нижний Новгород
Пользователь №: 75 160



Tarbal,
вы меня не поняли.

Я в курсе, что можно скачать ангстромовские и убунтовские пакеты для gcc.
Цель моя - самостоятельно собрать его.
Go to the top of the page
 
+Quote Post
Enthusiast
сообщение Oct 31 2013, 04:58
Сообщение #4


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

Группа: Свой
Сообщений: 163
Регистрация: 25-09-09
Из: Nizhny Novgorod, Russia
Пользователь №: 52 588



Цитата(federal @ Oct 30 2013, 22:24) *
Кто нибудь сам собирал gcc?

В "Дженту" кросс-компилятор собирается из исходников вводом всего двух команд в консоли: тынц. Приятно порадовало, что при установке обновлений операционной системы кросс-компилятор пересобирается и обновляется самостоятельно. Я собирал компилятор для "АРМов", все работает отлично.
Go to the top of the page
 
+Quote Post
federal
сообщение Oct 31 2013, 06:07
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 74
Регистрация: 12-01-13
Из: Нижний Новгород
Пользователь №: 75 160



речь не про кросс-компилятор
Go to the top of the page
 
+Quote Post
alx2
сообщение Oct 31 2013, 06:22
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091



Цитата(federal @ Oct 30 2013, 23:24) *
Но, наверное, у многих рано или поздно возникало желание заиметь на отладке родной gcc.

Не понимаю, какая связь между отладкой и наличием нативного gcc...
Я прекрасно отлаживаю в целевом устройстве код, собранный кросс-компилятором на персональном компьютере...


--------------------
Всего наилучшего,
Alex Mogilnikov
Go to the top of the page
 
+Quote Post
xor.kruger
сообщение Oct 31 2013, 08:55
Сообщение #7


Местный
***

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



Цитата
Но, наверное, у многих рано или поздно возникало желание заиметь на отладке родной gcc.

Buildroot Вам в помощь sm.gif BR2_PACKAGE_GCC_TARGET - опция в Buildroot которую необходимо установить.
Go to the top of the page
 
+Quote Post
federal
сообщение Oct 31 2013, 08:59
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 74
Регистрация: 12-01-13
Из: Нижний Новгород
Пользователь №: 75 160



Цитата(alx2 @ Oct 31 2013, 10:22) *
Не понимаю, какая связь между отладкой и наличием нативного gcc...

отладка имелась ввиду конечное устройство.

Цитата(alx2 @ Oct 31 2013, 10:22) *
Я прекрасно отлаживаю в целевом устройстве код, собранный кросс-компилятором на персональном компьютере...

суть не в отладке.

по теме, как собрать?
у кросс компилятора свой glibc
на целевой плате - свой

при сборке пишут, что собирать нужно вообще новый и с ним линковать нативный gcc



Цитата(xor.kruger @ Oct 31 2013, 12:55) *
Buildroot Вам в помощь sm.gif BR2_PACKAGE_GCC_TARGET - опция в Buildroot которую необходимо установить.

с Buildroot не хотелось бы связываться, хочется самому собрать без Buildroot
Go to the top of the page
 
+Quote Post
xor.kruger
сообщение Oct 31 2013, 09:42
Сообщение #9


Местный
***

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



Цитата
с Buildroot не хотелось бы связываться, хочется самому собрать без Buildroot

Можно посоветовать Вам книжицу "Embedded Linux system design and development". В ней описан путь сборки собственного кросс-компилятора, но можно место нативного компилятора указывать применение Вашего кросс-компилятора.
Хотя в книге описаны только самые основные шаги, возни будет ну оооочень много...
Go to the top of the page
 
+Quote Post
federal
сообщение Oct 31 2013, 10:27
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 74
Регистрация: 12-01-13
Из: Нижний Новгород
Пользователь №: 75 160



xor.kruger, спасибо за совет. Книгу читал.
Как кросс gcc собрать - тут все прозрачно и понятно.

вопрос именно в том, что для нативного gcc собирать glibc надо?
вообще, по логике, не нужно, ибо придется кроме gcc пересобирать всю систему.

мне так же не понятно, есть CodeSourcery, при кросскомпиляции он линкуется с либами(glibc и т.д.), которые идут вместе с CodeSourcery.
на целевой платформе glibc может быть другой(у меня другая).
обычные user-space приложения, собранные при помощи CodeSourcery на целевой плате запускаются и никаких ошибок.

кросскомпилирую binutils, когда --target равен --host, компилирую успешно.


Сообщение отредактировал federal - Oct 31 2013, 11:27
Go to the top of the page
 
+Quote Post
Enthusiast
сообщение Oct 31 2013, 15:04
Сообщение #11


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

Группа: Свой
Сообщений: 163
Регистрация: 25-09-09
Из: Nizhny Novgorod, Russia
Пользователь №: 52 588



Цитата(federal @ Oct 31 2013, 09:07) *
речь не про кросс-компилятор

Тогда почему бы на целевом устройстве просто не ввести команду: "emerge gcc"? Исходники под целевое устройство скачаются сами вместе с зависимостями. Зачем ломать себе мозг?
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Oct 31 2013, 15:26
Сообщение #12


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

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(federal @ Oct 31 2013, 14:27) *
xor.kruger, спасибо за совет. Книгу читал.
Как кросс gcc собрать - тут все прозрачно и понятно.

вопрос именно в том, что для нативного gcc собирать glibc надо?


libc.so в обоих случаях используется тот же самый, потому как он динамически линкуемый.
Для статической линковки libc.a надо указать ключ при компиляции апликации.

Цитата(federal @ Oct 31 2013, 12:59) *
у кросс компилятора свой glibc
на целевой плате - свой


По умолчанию один и тот же. Он должен стоять на обеих платформах, но на рабочей машине чисто для линковки. Исполняться будет всегда тот, что стоит на таргет машине.
Go to the top of the page
 
+Quote Post
federal
сообщение Oct 31 2013, 16:13
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 74
Регистрация: 12-01-13
Из: Нижний Новгород
Пользователь №: 75 160



Цитата(Tarbal @ Oct 31 2013, 19:26) *
libc.so в обоих случаях используется тот же самый, потому как он динамически линкуемый.
Для статической линковки libc.a надо указать ключ при компиляции апликации.

так оно и есть

Цитата(Tarbal @ Oct 31 2013, 19:26) *
По умолчанию один и тот же. Он должен стоять на обеих платформах, но на рабочей машине чисто для линковки. Исполняться будет всегда тот, что стоит на таргет машине.

я тоже так считал, да и считаю...
но на деле не совсем так. объясню почему.

вы можете поставить CodeSourcery, иметь из целевой фс либы, скажем, из /usr/lib, но не иметь glibc.
и вы удачно скомпилируете приложение, явно компилятору не указывая, где ваш целевой glibc лежит. Такой фокус не проходит, скажем, с pthread. А вот с glibc проходит. И вы успешно запустите ваше приложение.

вот тут то и возник у меня этот вопрос, ибо, используя старенький glibc на целевой платформе и собирая нативный тулчейн, происходит путаница с glibc. А собирая новый glibc, придется пересобирать всю систему.
,
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Oct 31 2013, 18:26
Сообщение #14


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

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



А какой у вас Линукс?

Есть книга, где описано как самому строить Линукс. Посмотрите там.
http://www.linuxfromscratch.org/#
Go to the top of the page
 
+Quote Post
federal
сообщение Oct 31 2013, 18:31
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 74
Регистрация: 12-01-13
Из: Нижний Новгород
Пользователь №: 75 160



ядро 3.5.5
по lfs и собираю
Go to the top of the page
 
+Quote Post

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

 


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


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