Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: кросс компилятор. начинающий я!  (Прочитано 1480 раз)

0 Пользователей и 1 Гость просматривают эту тему.

bnt

  • Автор темы
  • Гость
привет уважаемый форум....   помоги разобраться с кросс компиляцией. как это вообще работает. ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf
что такое ARCH? что такое CROSS_COMPILE    это какие -то переменные? когда я вних что-то передаю, где это отразится? в makefile?

Профиль ТС (пользователь bnt) по состоянию на 22/02/2020 на форуме более не существует. Модератором раздела принято решение закрыть тему.
--zg_nico
« Последнее редактирование: 22 Февраля 2020, 06:49:00 от zg_nico »

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: кросс компилятор. начинающий я!
« Ответ #1 : 24 Мая 2019, 20:10:25 »
bnt, а открыть документацию религия или что-то другое мешает? Или хотя бы головой немножко подумать?

Я не злой, но Вы просто не хотяти нечего делать сами, вам все возьми да полож


ARCH - указание ярхитектуры
CROSS_COMPILE - какой компилятор использовать

Где отразиться - в собраном ПО, которое будет запускаться только на процессорах\системах с указаной архитектурой

P.S. С первым можно было разобраться даже открыв source.list для менеджера пакетов.
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

bnt

  • Автор темы
  • Гость
Re: кросс компилятор. начинающий я!
« Ответ #2 : 24 Мая 2019, 21:02:07 »
хорошо, когда умный человек, как Вы....  он откроет и прочитает и поймет.  я могу открыть ,прочитать и не понять.

поэтому иду на форум.  да, я помню, что форумы не для этого. они для другого. но для чего именно мне не сказали.

ну ладно, что же происходит когда я делаю ARCH=arm ? так бы компилятор заглянул в makefile и там бы увидел допустим x86.  и под эту архитектуру бы и компилил. а так я компилятору сразу указал нужную архитектуру. да? и теперь он проигнорирует ARCH=x86 в makefile и будет использовать ARCH=arm.  правильно?

Онлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5583
  • Все по палатам!
    • Просмотр профиля
Re: кросс компилятор. начинающий я!
« Ответ #3 : 24 Мая 2019, 22:18:04 »
привет уважаемый форум....   помоги разобраться с кросс компиляцией.
Прям философский вопрос. То есть тебе это надо в общем виде, для любых языков и любых (возможно гипотетических) архитектур, возможно и для нейронных систем?
Извините, я все еще учусь

bnt

  • Автор темы
  • Гость
Re: кросс компилятор. начинающий я!
« Ответ #4 : 24 Мая 2019, 22:24:04 »
возможно и для нейронных систем. если из шараги не выпнут.  преводы говорят ,что из меня не получится программиста. в лучшем случае сторож.

Онлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5583
  • Все по палатам!
    • Просмотр профиля
Re: кросс компилятор. начинающий я!
« Ответ #5 : 24 Мая 2019, 22:30:08 »
если из шараги не выпнут.  преводы говорят
Ты думаешь здесь это кого-то интересует?
А вот о языке,  архитектурах и т.п. сказать нечего? И какой помощи ты хочешь?
Извините, я все еще учусь

bnt

  • Автор темы
  • Гость
Re: кросс компилятор. начинающий я!
« Ответ #6 : 24 Мая 2019, 23:44:44 »
да, наверное интересует, ведь это ж форумы.  на форумах Linux обычно говорят обо всем только не о Линуксе.


не ну этот форум другой.  этот форум норм.   самый отстой это LOR.  там одна гопота. раньше когда читал от них соообщения, мне почему то виделась такая картина ,как они на карточках сидят возле компа с пивом в руке.  ужасный форум.


что мне нужно спрашиваете? да хочу скомпилить пару модулей кросс компилятором.  модуля для arm , компилить буду на x86. можете написать примером, как это сделать?

Пользователь добавил сообщение 24 Мая 2019, 23:47:55:
там еще была одна девушка, она писала всегда 'поколение не пуганных хипстеров"  .   больше 90% комминтов от нее было  именно такого содержания.
« Последнее редактирование: 24 Мая 2019, 23:47:55 от bnt »

Оффлайн maks05

  • Старожил
  • *
  • Сообщений: 6786
    • Просмотр профиля
Re: кросс компилятор. начинающий я!
« Ответ #7 : 25 Мая 2019, 03:01:34 »
поколение не пуганных хипстеров
Умная девушка. Ибо такие вопросы ставит как раз не пуганный хипстер. Пуганный программист сначала понимает, что и зачем он будет компилировать. Вот когда вы себе ответите на вопрос, что вы хотите скомпилировать и почему именно на ARM, то может и вообще передумаете. А если не передумаете, то некоторые ответы придут сами собой.

И да, возможно, преподаватели правы. Я вот точно знаю, что я скорее всего никогда не стану художником (три раза безуспешно пытался научиться), но зато хорошо фотографирую. И у меня всегда было хорошо с математикой вообще, включая высшую (подзабыл, её, конечно, уже), но плохо с бух. учётом. И мне легче выучить компьютерный язык, чем иностранный человеческий (да даже полностью свой родной). Так что программирование - оно не для всех. Задумайтесь.

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: кросс компилятор. начинающий я!
« Ответ #8 : 25 Мая 2019, 06:46:13 »
bnt, давайте мухи и котлеты отдельно.

Make - это не компилятор!!! Это программа сборщик, которая читая тот же Makefile выполняет инструкции из него (и запускает тот же компилятор при надобности, который предоставляет система, или тот, что указан в make.conf системы).
Цитировать
     make is a program designed to simplify the maintenance of other programs.
     Its input is a list of specifications as to the files upon which programs
     and other files depend.  If no -f makefile makefile option is given, make
     will try to open `makefile' then `Makefile' in order to find the
     specifications.  If the file `.depend' exists, it is read (see mkdep(1)).

А вот компилятор - это уже компилятор.
https://stackoverflow.com/questions/3467850/cross-compiling-a-kernel-module
Цитировать
Putting ARCH and CROSS_COMPILE in the Makefile doesn't work. You need to put them on the command line
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Оффлайн maks05

  • Старожил
  • *
  • Сообщений: 6786
    • Просмотр профиля
Re: кросс компилятор. начинающий я!
« Ответ #9 : 25 Мая 2019, 07:35:44 »
Make - это не компилятор!!! Это программа сборщик
В контексте этой темы у меня возникает вопрос: если человек учится и не знает таких вещей, то чем там заняты его преподы?

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: кросс компилятор. начинающий я!
« Ответ #10 : 25 Мая 2019, 08:59:30 »
В контексте этой темы у меня возникает вопрос: если человек учится и не знает таких вещей, то чем там заняты его преподы?
(Нажмите, чтобы показать/скрыть)
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

bnt

  • Автор темы
  • Гость
Re: кросс компилятор. начинающий я!
« Ответ #11 : 25 Мая 2019, 11:56:10 »
Make - это не компилятор!
это очень важно. спасибо что уделяете внимание таким мелочам.
ARCH=arm
make напрямую передаст компилятору arm или запишет в make.conf?

Пользователь добавил сообщение 25 Мая 2019, 12:10:42:
В контексте этой темы у меня возникает вопрос: если человек учится и не знает таких вещей, то чем там заняты его преподы?
не раз поднимался вопрос о том, что вместо таких важных вещей, как архитектура пк(почти никто не знает как устроена шина scsi) 100% никто не знает как устроен makefile... но нам дают эксель, ворд, и прочую майкософтовскую фигню. ах да, еще же мультимедиа.  20 часо программирования, 80 часов остальной фигни, как мультимедиа, ворд, эксель, и физра. программисты явно не нужны никому.


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


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

Пользователь добавил сообщение 25 Мая 2019, 12:14:40:
А вот компилятор - это уже компилятор.
https://stackoverflow.com/questions/3467850/cross-compiling-a-kernel-module
то же очень интересно. спасибо

Пользователь добавил сообщение 25 Мая 2019, 12:22:19:
давайте ускорим процесс пожалйста. сейчас потеряем главное.  тут пару строчек то надо.

напишите пожалуйста простой пример, как бы собрали gcc с помощью ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf.

почему такой пример? дапросто на примере gcc  у меня не возникнуть лишние вопросы. 

тут есть один момент....
./configure !  будет создан makefile.   если создать makefile через configure сразу с ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf, то можно просто дальше выполнить make.  так? то есть не предавать через make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf. или я не так все понял?
« Последнее редактирование: 25 Мая 2019, 12:22:19 от bnt »

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: кросс компилятор. начинающий я!
« Ответ #12 : 25 Мая 2019, 23:20:20 »
bnt, вы вообще читаете что Вам пишут или читаете только то, что удобно Вам.


Putting ARCH and CROSS_COMPILE in the Makefile doesn't work. You need to put them on the command line

Что значит: Не работает оно в Makefile, данные опции надо указывать в командной строке!
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

bnt

  • Автор темы
  • Гость
Re: кросс компилятор. начинающий я!
« Ответ #13 : 25 Мая 2019, 23:46:56 »
подождите.....   gcc будет руководствоваться makefil-ом.  от туда он узнает и архитектуру пк для которого собирается и начем собирается , и поймет как оптимизировать код и надо ли вообще это делать.  если я сделаю make ARCH=arm к примеру, то gcc уже возьмет архитектуру целевой машины не из makefile а получит ее сразу о в обход так сказать makefile.   если makefile не создан, то это вообще песня.  тут все просто и легко.
делается
./configure --host=x86_64(тут указываете на чем будете собирать) --target=amrv8(тут указываете для кого будете соибарть) --build=x86_64(тут надо указать на чем был собран компилятор) . я его собрал сам, на x86_64машине.



все, после можно только сделать make -j8 и поехали! 

Не работает оно в Makefile, данные опции надо указывать в командной строке!
это я понимаю уже ... но все же спасибо

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

ну тут еще много вопросов.


Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: кросс компилятор. начинающий я!
« Ответ #14 : 26 Мая 2019, 08:10:49 »
подождите.....   gcc будет руководствоваться makefil-ом.
НЕ БУДЕТ!
Makefile - это указания сборщику, а не компилятору! И да, я там выше писал, что компилятор можно и переопределить. Мне, к примеру, нравится больше CLang, кроме того не все ПО компилируется с помощью С/C++ компиляторов
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

 

Страница сгенерирована за 0.031 секунд. Запросов: 23.