Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
 Аватар для peter_irich
370 / 226 / 53
Регистрация: 18.10.2017
Сообщений: 2,418

Компилирование для arm7 в Linux

06.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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.11.2017, 21:15
Ответы с готовыми решениями:

Компилирование для arm7 в Ubuntu
Здравствуйте! Есть программа для arm7, написанная не мной, я там только иногда что-нибудь слегка изменяю. Изначально она...

Компилирования для arm7 в Linux
Здравствуйте! Сам я готовых программ для arm не писал, только корректировал написанную другим человеком более 10 лет назад в Linux...

Компилирование под Linux
Доброго времени суток! Мне нужно скомпилировать проект под Linux, в поисках был наслышан и начитан о различных методах компиляции, к...

22
 Аватар для peter_irich
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
Эксперт .NET
 Аватар для Rius
13342 / 7795 / 1693
Регистрация: 25.05.2015
Сообщений: 23,736
Записей в блоге: 14
20.11.2017, 20:03
Похоже изменение компилятора для вас будет сложным делом, т.к. проект прибит гвоздями к тому.
Я бы посоветовал найти способ запуска старого компилятора на новой системе.
0
 Аватар для peter_irich
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.11.2017, 23:53

Linux Ubuntu компилирование через терминал
Подскажите плз! В линуксе дебиане скомпилировать из .pas можно с помощью команды gpc -o file file.pas где file это имя файла, а как же в...

компилирование/установка библиотек под Linux
Здравствуйте! Столкнулся с проблемой: скачал с сайта разработчика пакет библиотек и программ для Linux. Там make-файл с содержимым: ...

Компилирование EXE для других Win
Пишу переводчик игры на С++ хотелось бы что бы он был кросс-платформенный хотя бы для операционок семества Windows (XP и выше) Но...

ARM7 + FreeRTOS + Eclipse прерывания
Запускаю FriiRTOS на lpc2368. Саму ОС уже запустил, задачи создаются. Пока не понял как правильно объявлять обработчики прерываний. При...

Учебный лабораторный стенд SDK-2.0 на базе LPC 2000 ARM7
Добрый день. Кто-то имел счастье общения с данным контроллером? Нужна помощь в написании программы.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал (мат мет мод 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
Однажды один участник в своём блоге, на этом форуме, сделал запись "О языках замолвите слово". Понимая, что язык - важная вещь, я решил хорошо подумать, прежде чем сказать, и сказал то, что вы видите. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru