|
370 / 226 / 53
Регистрация: 18.10.2017
Сообщений: 2,418
|
|
Компилирование для arm7 в Linux06.11.2017, 21:15. Показов 4379. Ответов 22
Метки нет (Все метки)
Здравствуйте!
Требуется в 64-разрядной Linux построить 32-рязядную программу для arm7 или хотя бы полностью скомпилировать. Ранее это делалось на 32-разрядном компьютере с Debian Etch, при этом использовались linux-toolchain и newlib.c. linux-toolchain - это архив с 32-разрядными исполнимыми утилитами - компилятором и прочими, а newlib.c надо было компилировать. Сейчас я в Ubuntu-16.04, в ней есть свой пакет с компилятором и прочими, компилятор называется arm-linux-gnueabihf-gcc-5. Для процессора надо указывать "-march=armv4t". А как быть с newlib.c? У меня она не компилируется. Или надо обходится без неё? Тогда потребуется исправлять текст программы, например, вместо stricmp вызывать strcasecmp, но мне ведь надо 32-разрядную программу. Как надо действовать, установить также 32-разрядную libc6 и прочее? Она и другие библиотеки, насколько я помню, установлены. Программа не моя. Сейчас исполнимый файл не строится, есть странные сообщения, что не определены объявленные функции, хотя c-модуль с ними скомпилировался, и ещё требуется секция rel.plt, чего не требовалось раньше. Там от автора остались конфигурационные файлы с расширением ld, но в них этой секции нет, а сам я их строить не умею, только когда-то давно чуть поправлял. Ещё требуется указывать опцию компилятора "-mfloat-softfp", чего опять же не требовалось раньше. Короче, главный вопрос сформулирован в 1-й фразе, просьба что-то подсказать или дать ссылку на инструкцию. Пётр.
0
|
|
| 06.11.2017, 21:15 | |
|
Ответы с готовыми решениями:
22
Компилирование для arm7 в Ubuntu Компилирования для arm7 в Linux
|
|
370 / 226 / 53
Регистрация: 18.10.2017
Сообщений: 2,418
|
|
| 19.11.2017, 18:38 [ТС] | |
|
Rius, Я подключил crti.o, crtn,o crtbegin.o и crtend.o из /usr/local/gcc/arm-none-eabi/4.9.3,
_fini там есть в crti.o, теперь требуется подключить нечто, содержащее _isatty. Оно есть в /usr/lib/arm-none-eabi/newlib и называется redboot-syscalls.o. Там есть также redboot-crt0.o и в нём тоже есть _fini, но в нём она не определена, а в вышеупомянутом crti.o определена. Ещё здесь есть crt0.o с __libc_fini_array, тоже неопределённой, и есть redboot.ld. Переходить на модули из /usr/local/gcc/arm-none-eabi/4.9.3 я ещё не пробовал, а что это за redboot? И как будет правильно - брать всё это из каталога из gcc или из newlib? Пётр. Добавлено через 28 минут Пока что оказалось, что подклюючить redboot-syscallls.o я вообще не могу, т.к. некоторые объявления в нём совпадают с определениям в файле в рабочем каталоге crt_boot.S с настройками разных областей для процессора. Так что не знаю, как добавить _isatty. Пётр.
0
|
|
|
370 / 226 / 53
Регистрация: 18.10.2017
Сообщений: 2,418
|
|
| 20.11.2017, 23:53 [ТС] | |
|
Rius, Там такой crt_boot.S:
Кликните здесь для просмотра всего текста
#include "AT91SAM7X256_inc.h" #include "exits.h" .equ _exit, 0x20 .global _exit .equ ARM_MODE_USR, 0x10 .equ ARM_MODE_FIQ, 0x11 .equ ARM_MODE_IRQ, 0x12 .equ ARM_MODE_SVC, 0x13 .equ ARM_MODE_ABT, 0x17 .equ ARM_MODE_UND, 0x1b .equ ARM_MODE_SYS, 0x1f .equ I_BIT, 0x80 .equ F_BIT, 0x40 .section .init .org 0 .global main ldr pc, =_start mov r0, #EX_UNEXP_SWI ldr pc, =_exit .global _start .func _start _start: /* NOTE: stacks is set by bootloader, and AIC is reset too. */ .global hardware_init ldr r0, =hardware_init mov lr, pc bx r0 msr CPSR_c, #ARM_MODE_SVC /* enable interrupts */ /* копирование содержимого секции .data из ПЗУ в ОЗУ: _etext --> _data.._edata */ .global __data_load__ .global __data_start__ .global __data_end__ copy_data: ldr r0, =__data_load__ ldr r1, =__data_start__ ldr r2, =__data_end__ copy_data1: cmp r1, r2 ldrlo r3, [r0], #4 strlo r3, [r1], #4 blo copy_data1 /* заполнение секции .bss нулём */ .global __bss_start__ .global __bss_end__ zero_bss: ldr r0, =__bss_start__ ldr r1, =__bss_end__ mov r2, #0 zero_bss1: cmp r0, r1 strlo r2, [r0], #4 blo zero_bss1 /* вызов конструкторов C++ */ .global __ctors_start__ .global __ctors_end__ call_ctors: ldr r0, =__ctors_start__ ldr r1, =__ctors_end__ b call_ctors2 call_ctors1: ldr r2, [r0], #4 stmfd sp!, {r0-r1} /* сохр. r0-r1 на стеке */ mov lr, pc bx r2 ldmia sp!, {r0-r1} call_ctors2: cmp r0, r1 blo call_ctors1 /* вызов функции main() */ .global main mov r0, #0 /* int argc, char *argv[] */ mov r1, r0 mov r2, r0 /* ? */ mov fp, r0 mov r7, r0 /* ? */ ldr r4, =main mov lr, #-4 /* возврат из main() по адресу 0 */ bx r4 .size _start, .-_start .endfunc .section .text .global di .global ei .func di di: msr CPSR_c, #ARM_MODE_SVC|I_BIT mov pc, lr .endfunc .func ei ei: msr CPSR_c, #ARM_MODE_SVC mov pc, lr .endfunc .end Если его не подключать, чтобы не было конфликтов с redboot-syscalls.o, то одному c-модулю не хватает определённых в нём ei и di, в конце. Тут при вставке не сохранилось форматирование. Пётр.
0
|
|
| 20.11.2017, 23:53 | |
|
Linux Ubuntu компилирование через терминал компилирование/установка библиотек под Linux
ARM7 + FreeRTOS + Eclipse прерывания Учебный лабораторный стенд SDK-2.0 на базе LPC 2000 ARM7 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал (мат мет мод 29)
anaschu 23.06.2026
Многофункциональное здание:
как одно здание порождает конфликты требований,
которые никто не планировал
Материалы для обсуждения с МГСУ · 2026
Рисунки внутри приложенного ворд файла.
Что за. . .
|
28. Конкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования?
Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная.
Где разрыв
. . .
|
27. Планы на разработку функциональных требований к строительству внутри модели пищеблока (или не только его?)
anaschu 22.06.2026
Что уже реализовано и даёт конфликты «бесплатно»
Самый простой конфликт уже работает — конфликт за ресурс-работника. Заданий больше, чем доступных поваров → очередь в queue1. Это прямое отражение. . .
|
26. мед мат модель.Какие типы конфликтов функциональных требований можно рассчитать через ДЕС-моделирование (СМО) в AnyLogic?
anaschu 22.06.2026
Что ДЕС/ СМО умеет считать напрямую:
Конфликты за ресурсы (очереди, узкие места). Несколько типов агентов (повара, учителя, рабочие, пациенты) претендуют на один ресурс (лифт, вход, коридор,. . .
|
|
25 модель здравосохранения и функциональных требований к пищеблоку: конфликты функциональных требований.
anaschu 22.06.2026
Есть ли данные о том, какие функциональные/ эксплуатационные требования или их сочетания труднее всего учитывать при проектировании зданий?
Да, такие данные есть, и они хорошо описаны и в российской,. . .
|
Remote Connection Manager
DevAlt 21.06.2026
Написал для себя небольшую прилагу:
https:/ / github. com/ altbodhi/ ReConMan
По итогу пришел к мысли, что DU не дружат с существующими технологиями.
От сериализации до отображения в реляционную. . .
|
Администрация Хабра удаляет новые энергоэфективные алгоритмы, которые не западной школы кода, и вовсе никак не сгенерированы
Hrethgir 20.06.2026
Делается это, как замечено, при правках - при объявлении концептуальных отличий в алгоримах. Делается это, по линейке событий - после дополнения публикации основными отличиями от основных западных. . .
|
Процесс ориентированная диалектика (не новость - просто системное обновление, философия).
Hrethgir 20.06.2026
Однажды один участник в своём блоге, на этом форуме, сделал запись "О языках замолвите слово". Понимая, что язык - важная вещь, я решил хорошо подумать, прежде чем сказать, и сказал то, что вы видите. . .
|