|
370 / 226 / 53
Регистрация: 18.10.2017
Сообщений: 2,418
|
|
Компилирование для arm7 в Linux06.11.2017, 21:15. Показов 4393. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата)
Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в. . .
|
|
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса
Калибровка параметров симбиотической модели: технический обзор
Содержание:
Введение
Постановка проблемы
Технические аспекты реализации
Процесс внедрения изменений
|
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0»
https:/ / ibb. co/ NnkGpfMd
Представленная интегрированная схема описывает непрерывную нелинейную. . .
|
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы
### Аннотация
Представлено исследование по разработке агентной модели микоризной. . .
|
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики
Контекст
Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
|