Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с переносом проекта на GCC
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
igorenja
Доброе время суток!
Возникла необходимость переноса проекта написанного под IAR на CodeSourcery.
Написал Makefile все вроде бы компилируется но с ликером проблема.

Код
arm-none-eabi-g++ -nostartfiles -mcpu=cortex-m0 -mthumb -Wl,--gc-sections -T lpc1xxx/memory.ld -o release/Exe/mtv.elf release/Obj/temperature.o release/Obj/ccanopenobjectdictionary.o release/Obj/cgpio.o release/Obj/cwatchdog.o release/Obj/tools.o release/Obj/main.o release/Obj/csdoserver.o release/Obj/cuart.o release/Obj/csysticktimer.o release/Obj/system.o release/Obj/ccriticalsection.o release/Obj/cadc.o release/Obj/cspi.o release/Obj/ccan.o release/Obj/cflashat25.o release/Obj/cresult.o release/Obj/cstorage.o release/Obj/ccanopen.o release/Obj/cflashcopier.o release/Obj/LPC11xx_handlers.o release/Obj/LPC1xxx_startup.o
/opt/arm-2011.03/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/lib/armv6-m/libc.a(lib_a-abort.o): In function `abort':
abort.c:(.text+0xa): undefined reference to `_exit'
/opt/arm-2011.03/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/lib/armv6-m/libc.a(lib_a-fstatr.o): In function `_fstat_r':
fstatr.c:(.text+0xe): undefined reference to `_fstat'
/opt/arm-2011.03/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/lib/armv6-m/libc.a(lib_a-sbrkr.o): In function `_sbrk_r':
sbrkr.c:(.text+0xc): undefined reference to `_sbrk'
/opt/arm-2011.03/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/lib/armv6-m/libc.a(lib_a-signalr.o): In function `_kill_r':
signalr.c:(.text+0xe): undefined reference to `_kill'
/opt/arm-2011.03/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/lib/armv6-m/libc.a(lib_a-signalr.o): In function `_getpid_r':
signalr.c:(.text+0x2a): undefined reference to `_getpid'
/opt/arm-2011.03/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/lib/armv6-m/libc.a(lib_a-writer.o): In function `_write_r':
writer.c:(.text+0x10): undefined reference to `_write'
/opt/arm-2011.03/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/lib/armv6-m/libc.a(lib_a-closer.o): In function `_close_r':
closer.c:(.text+0xc): undefined reference to `_close'
/opt/arm-2011.03/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/lib/armv6-m/libc.a(lib_a-isattyr.o): In function `_isatty_r':
isattyr.c:(.text+0xc): undefined reference to `_isatty'
/opt/arm-2011.03/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/lib/armv6-m/libc.a(lib_a-lseekr.o): In function `_lseek_r':
lseekr.c:(.text+0x10): undefined reference to `_lseek'
/opt/arm-2011.03/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/lib/armv6-m/libc.a(lib_a-readr.o): In function `_read_r':
readr.c:(.text+0x10): undefined reference to `_read'
collect2: ld returned 1 exit status
make: *** [all] Error 1


Когда линкер запускается без стартапа выше обозначенных ошибок нет.
Стартап и скрипт линкера во вложении

Всем откликнувшимся заранее спасибо

igorenja
Цитата(AHTOXA @ Jun 30 2011, 23:48) *


Спасибо огромное. Подложил файл, скомпилировал, сборка прошла успешно. Но есть одно "НО" Размер бинарника 120кБ. У меня памяти без начального загрузчика осталось 24кБ. Может быть подскажете чем может быть вызвано такое разростание прошивки (В iar бинарник был 17кБ)

Опции компилятора:
Код
arm-none-eabi-g++ -ffunction-sections -fdata-sections -fmessage-length=0 -DTARGET=LPC11xx -fno-builtin -Wall -O2 -c -mcpu=cortex-m0 -mthumb  -I. -I./io -I./wlib -I./system ccan.cpp -o release/Obj/ccan.o
Сергей Борщ
QUOTE (igorenja @ Jul 1 2011, 13:10) *
Размер бинарника 120кБ.
(s)printf?
AHTOXA
Цитата(igorenja @ Jul 1 2011, 16:10) *
Может быть подскажете чем может быть вызвано такое разростание прошивки (В iar бинарник был 17кБ)

Да, это такой у arm-gcc printf. Он тянет за собой malloc и кучу всего прочего. Замените его чем-нибудь попроще.

Цитата(igorenja @ Jul 1 2011, 16:10) *
Код
arm-none-eabi-g++ -ffunction-sections -fdata-sections -fmessage-length=0 -DTARGET=LPC11xx -fno-builtin -Wall -O2 -c -mcpu=cortex-m0 -mthumb  -I. -I./io -I./wlib -I./system ccan.cpp -o release/Obj/ccan.o


Не забыли к ключам компилятора -ffunction-sections -fdata-sections добавить ключ линкера -Wl,--gc-sections ?
igorenja
Цитата(Сергей Борщ @ Jul 1 2011, 20:22) *
(s)printf?


нет там такого добра


Цитата(AHTOXA @ Jul 1 2011, 20:42) *
Да, это такой у arm-gcc printf. Он тянет за собой malloc и кучу всего прочего. Замените его чем-нибудь попроще.



Не забыли к ключам компилятора -ffunction-sections -fdata-sections добавить ключ линкера -Wl,--gc-sections ?


Единственное что я использую из библиотек это memove strcmp memset memcpy... ключ линкера есть
AHTOXA
Цитата(igorenja @ Jul 1 2011, 20:38) *
Единственное что я использую из библиотек это memove strcmp memset memcpy... ключ линкера есть

ftoa/dtoa? Чисто виртуальные функции? Исключения?
igorenja
Цитата(AHTOXA @ Jul 1 2011, 22:06) *
ftoa/dtoa? Исключения?


Нет

Цитата(AHTOXA @ Jul 1 2011, 22:06) *
Чисто виртуальные функции?


Есть... А что с ними не в порядке?
AHTOXA
Цитата(igorenja @ Jul 1 2011, 21:21) *
Есть... А что с ними не в порядке?

Они тоже много чего за собой тянут. Решение - тут.
IgorKossak
rand()?
igorenja
Цитата(AHTOXA @ Jul 1 2011, 22:29) *
Они тоже много чего за собой тянут. Решение - тут.

непомогло

Цитата(IgorKossak @ Jul 1 2011, 23:07) *
rand()?

нет.

Я уже честным делом грешу на шаблоны... wacko.gif
AHTOXA
Цитата(igorenja @ Jul 2 2011, 10:15) *
непомогло

Дык, теперь надо убрать syscalls.c sm.gif
igorenja
Цитата(AHTOXA @ Jul 2 2011, 12:14) *
Дык, теперь надо убрать syscalls.c sm.gif


Убрал, таже хрень.... Решил собрать хеллоуворлд и постепенно добавлять туда свои файлы. Глядишь и найду в чём дело... rolleyes.gif
Genadi Zawidowski
гнусный хак: вставить в любой файл программы.
Код
char __aeabi_unwind_cpp_pr0 [0];


Если библиотека собрана с обработкой ексепшинов... В сборке klen не требуется.
У меня тянуло за собой printf 64-битное деление целых чисел.
Genadi Zawidowski
Цитата(igorenja @ Jul 2 2011, 10:04) *
Глядишь и найду в чём дело... rolleyes.gif


Нашли? Моё предложение попробовали?
alx2
Цитата(igorenja @ Jul 1 2011, 15:10) *
Но есть одно "НО" Размер бинарника 120кБ. У меня памяти без начального загрузчика осталось 24кБ. Может быть подскажете чем может быть вызвано такое разростание прошивки (В iar бинарник был 17кБ)
Не увидел у Вас в команде линковки генерации map-файла. Попросите линкер выводить map-файл - это ИМХО первое место, куда надо смотреть в случае подобных непонятностей. Там подробно расписано, что, откуда и почему линер включил в выходной файл.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.