|
Проблема с переносом проекта на GCC |
|
|
|
Jun 30 2011, 15:38
|

Частый гость
 
Группа: Свой
Сообщений: 130
Регистрация: 8-08-08
Из: Новосибирск
Пользователь №: 39 488

|
Доброе время суток! Возникла необходимость переноса проекта написанного под 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 Когда линкер запускается без стартапа выше обозначенных ошибок нет. Стартап и скрипт линкера во вложении Всем откликнувшимся заранее спасибо
|
|
|
|
|
Jul 1 2011, 10:10
|

Частый гость
 
Группа: Свой
Сообщений: 130
Регистрация: 8-08-08
Из: Новосибирск
Пользователь №: 39 488

|
Цитата(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
|
|
|
|
|
Jul 1 2011, 13:42
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(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 ?
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Jul 1 2011, 14:38
|

Частый гость
 
Группа: Свой
Сообщений: 130
Регистрация: 8-08-08
Из: Новосибирск
Пользователь №: 39 488

|
Цитата(Сергей Борщ @ 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... ключ линкера есть
|
|
|
|
|
Jul 1 2011, 15:21
|

Частый гость
 
Группа: Свой
Сообщений: 130
Регистрация: 8-08-08
Из: Новосибирск
Пользователь №: 39 488

|
Цитата(AHTOXA @ Jul 1 2011, 22:06)  ftoa/dtoa? Исключения? Нет Цитата(AHTOXA @ Jul 1 2011, 22:06)  Чисто виртуальные функции? Есть... А что с ними не в порядке?
|
|
|
|
|
Jul 2 2011, 04:15
|

Частый гость
 
Группа: Свой
Сообщений: 130
Регистрация: 8-08-08
Из: Новосибирск
Пользователь №: 39 488

|
Цитата(AHTOXA @ Jul 1 2011, 22:29)  Они тоже много чего за собой тянут. Решение - тут. непомогло Цитата(IgorKossak @ Jul 1 2011, 23:07)  rand()? нет. Я уже честным делом грешу на шаблоны...
|
|
|
|
|
Jul 3 2011, 23:06
|

Профессионал
    
Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634

|
гнусный хак: вставить в любой файл программы. Код char __aeabi_unwind_cpp_pr0 [0]; Если библиотека собрана с обработкой ексепшинов... В сборке klen не требуется. У меня тянуло за собой printf 64-битное деление целых чисел.
Сообщение отредактировал Genadi Zawidowski - Jul 3 2011, 23:09
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|