Перейти к содержанию
    

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

 

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

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

 

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

 

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

 

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

 

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

 

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

 

--

С уважением

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

 

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

 

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

 

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

 

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

 

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

 

--

С уважением

 

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

sudo apt-get install gcc

 

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

 

Еще способ:

Установить LTIB. Фрискейл дают образ диска для виртуальной машины с уже установленным.

Там в конфигурации можно выбрать и скомпилировать.

 

Другой способ на этом сайте можно заказать построить все что угодно.

http://www.timesys.com/

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Tarbal,

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

 

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

Цель моя - самостоятельно собрать его.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

В "Дженту" кросс-компилятор собирается из исходников вводом всего двух команд в консоли: тынц. Приятно порадовало, что при установке обновлений операционной системы кросс-компилятор пересобирается и обновляется самостоятельно. Я собирал компилятор для "АРМов", все работает отлично.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Buildroot Вам в помощь :) BR2_PACKAGE_GCC_TARGET - опция в Buildroot которую необходимо установить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

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

 

по теме, как собрать?

у кросс компилятора свой glibc

на целевой плате - свой

 

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

 

 

 

Buildroot Вам в помощь :) BR2_PACKAGE_GCC_TARGET - опция в Buildroot которую необходимо установить.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Можно посоветовать Вам книжицу "Embedded Linux system design and development". В ней описан путь сборки собственного кросс-компилятора, но можно место нативного компилятора указывать применение Вашего кросс-компилятора.

Хотя в книге описаны только самые основные шаги, возни будет ну оооочень много...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

xor.kruger, спасибо за совет. Книгу читал.

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

 

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

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

 

мне так же не понятно, есть CodeSourcery, при кросскомпиляции он линкуется с либами(glibc и т.д.), которые идут вместе с CodeSourcery.

на целевой платформе glibc может быть другой(у меня другая).

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

 

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

 

Изменено пользователем federal

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

речь не про кросс-компилятор

Тогда почему бы на целевом устройстве просто не ввести команду: "emerge gcc"? Исходники под целевое устройство скачаются сами вместе с зависимостями. Зачем ломать себе мозг?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

xor.kruger, спасибо за совет. Книгу читал.

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

 

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

 

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

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

 

у кросс компилятора свой glibc

на целевой плате - свой

 

По умолчанию один и тот же. Он должен стоять на обеих платформах, но на рабочей машине чисто для линковки. Исполняться будет всегда тот, что стоит на таргет машине.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

так оно и есть

 

По умолчанию один и тот же. Он должен стоять на обеих платформах, но на рабочей машине чисто для линковки. Исполняться будет всегда тот, что стоит на таргет машине.

я тоже так считал, да и считаю...

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

 

вы можете поставить CodeSourcery, иметь из целевой фс либы, скажем, из /usr/lib, но не иметь glibc.

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

 

вот тут то и возник у меня этот вопрос, ибо, используя старенький glibc на целевой платформе и собирая нативный тулчейн, происходит путаница с glibc. А собирая новый glibc, придется пересобирать всю систему.

,

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Есть книга, где описано как самому строить Линукс. Посмотрите там.

http://www.linuxfromscratch.org/#

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...