реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> [РЕШЕНО] Не линкуется проект на C++ для Cortex-M3, gcc
smalcom
сообщение Mar 21 2010, 19:14
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



Сначала всё было написано на Си, комплировалось, линковалось и работало. Добавил простейший C++ код для пробы (создание класса) и посыпались ошибки

Цитата
-------------- Build: Release in test ---------------

arm-elf-gcc -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa -O2 -g -Isrc -Ih -c lib/core_cm3.c -o ./bin/Release/obj/lib/core_cm3.o
arm-elf-gcc -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa -O2 -g -Isrc -Ih -c lib/misc.c -o ./bin/Release/obj/lib/misc.o
arm-elf-gcc -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa -O2 -g -Isrc -Ih -c lib/stm32f10x_adc.c -o ./bin/Release/obj/lib/stm32f10x_adc.o
arm-elf-gcc -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa -O2 -g -Isrc -Ih -c lib/stm32f10x_bkp.c -o ./bin/Release/obj/lib/stm32f10x_bkp.o
arm-elf-gcc -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa -O2 -g -Isrc -Ih -c lib/stm32f10x_can.c -o ./bin/Release/obj/lib/stm32f10x_can.o
arm-elf-gcc -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa -O2 -g -Isrc -Ih -c lib/stm32f10x_dma.c -o ./bin/Release/obj/lib/stm32f10x_dma.o
arm-elf-gcc -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa -O2 -g -Isrc -Ih -c lib/stm32f10x_exti.c -o ./bin/Release/obj/lib/stm32f10x_exti.o
arm-elf-gcc -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa -O2 -g -Isrc -Ih -c lib/stm32f10x_flash.c -o ./bin/Release/obj/lib/stm32f10x_flash.o
arm-elf-gcc -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa -O2 -g -Isrc -Ih -c lib/stm32f10x_gpio.c -o ./bin/Release/obj/lib/stm32f10x_gpio.o
arm-elf-gcc -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa -O2 -g -Isrc -Ih -c lib/stm32f10x_i2c.c -o ./bin/Release/obj/lib/stm32f10x_i2c.o
arm-elf-gcc -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa -O2 -g -Isrc -Ih -c lib/stm32f10x_iwdg.c -o ./bin/Release/obj/lib/stm32f10x_iwdg.o
arm-elf-gcc -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa -O2 -g -Isrc -Ih -c lib/stm32f10x_pwr.c -o ./bin/Release/obj/lib/stm32f10x_pwr.o
arm-elf-gcc -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa -O2 -g -Isrc -Ih -c lib/stm32f10x_rcc.c -o ./bin/Release/obj/lib/stm32f10x_rcc.o
arm-elf-gcc -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa -O2 -g -Isrc -Ih -c lib/stm32f10x_rtc.c -o ./bin/Release/obj/lib/stm32f10x_rtc.o
arm-elf-gcc -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa -O2 -g -Isrc -Ih -c lib/stm32f10x_spi.c -o ./bin/Release/obj/lib/stm32f10x_spi.o
arm-elf-gcc -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa -O2 -g -Isrc -Ih -c lib/stm32f10x_tim.c -o ./bin/Release/obj/lib/stm32f10x_tim.o
arm-elf-gcc -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa -O2 -g -Isrc -Ih -c lib/stm32f10x_usart.c -o ./bin/Release/obj/lib/stm32f10x_usart.o
arm-elf-gcc -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa -O2 -g -Isrc -Ih -c lib/stm32f10x_wwdg.c -o ./bin/Release/obj/lib/stm32f10x_wwdg.o
arm-elf-gcc -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa -O2 -g -Isrc -Ih -c lib/system_stm32f10x.c -o ./bin/Release/obj/lib/system_stm32f10x.o
arm-elf-g++ -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa -O2 -g -Isrc -Ih -c src/cbuffer.cpp -o ./bin/Release/obj/src/cbuffer.o
arm-elf-gcc -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa -O2 -g -Isrc -Ih -c src/handlers.c -o ./bin/Release/obj/src/handlers.o
src/handlers.c:160: warning: initialization makes pointer from integer without a cast
arm-elf-g++ -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa -O2 -g -Isrc -Ih -c src/main.cpp -o ./bin/Release/obj/src/main.o
arm-elf-g++ -o ./bin/Release/test.elf ./bin/Release/obj/lib/core_cm3.o ./bin/Release/obj/lib/misc.o ./bin/Release/obj/lib/stm32f10x_adc.o ./bin/Release/obj/lib/stm32f10x_bkp.o ./bin/Release/obj/lib/stm32f10x_can.o ./bin/Release/obj/lib/stm32f10x_dma.o ./bin/Release/obj/lib/stm32f10x_exti.o ./bin/Release/obj/lib/stm32f10x_flash.o ./bin/Release/obj/lib/stm32f10x_gpio.o ./bin/Release/obj/lib/stm32f10x_i2c.o ./bin/Release/obj/lib/stm32f10x_iwdg.o ./bin/Release/obj/lib/stm32f10x_pwr.o ./bin/Release/obj/lib/stm32f10x_rcc.o ./bin/Release/obj/lib/stm32f10x_rtc.o ./bin/Release/obj/lib/stm32f10x_spi.o ./bin/Release/obj/lib/stm32f10x_tim.o ./bin/Release/obj/lib/stm32f10x_usart.o ./bin/Release/obj/lib/stm32f10x_wwdg.o ./bin/Release/obj/lib/system_stm32f10x.o ./bin/Release/obj/src/cbuffer.o ./bin/Release/obj/src/handlers.o ./bin/Release/obj/src/main.o -Wl,--gc-sections,-Map=main.elf.map,-cref,-u,Reset_Handler -T ld/stm32.ld -mcpu=cortex-m3 -mthumb -mthumb-interwork -mfpu=fpa
/mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/bin/ld: error: /mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/lib/crt0.o uses FPA instructions, whereas ./bin/Release/test.elf does not
/mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/bin/ld: error: /mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/lib/crt0.o uses hardware FP, whereas ./bin/Release/test.elf uses software FP
/mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/bin/ld: Warning: /mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/lib/crt0.o does not support interworking, whereas ./bin/Release/test.elf does
/mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/bin/ld: failed to merge target specific data of file /mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/lib/crt0.o
/mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/bin/ld: error: ./bin/Release/obj/lib/core_cm3.o uses FPA instructions, whereas ./bin/Release/test.elf does not
/mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/bin/ld: error: ./bin/Release/obj/lib/core_cm3.o uses hardware FP, whereas ./bin/Release/test.elf uses software FP
...
...
...
/mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/bin/ld: error: /mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/lib/libc.a(lib_a-readr.o) uses FPA instructions, whereas ./bin/Release/test.elf does not
/mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/bin/ld: error: /mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/lib/libc.a(lib_a-readr.o) uses hardware FP, whereas ./bin/Release/test.elf uses software FP
/mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/bin/ld: Warning: /mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/lib/libc.a(lib_a-readr.o) does not support interworking, whereas ./bin/Release/test.elf does
/mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/bin/ld: failed to merge target specific data of file /mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/lib/libc.a(lib_a-readr.o)
/mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/bin/ld: /mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/lib/libc.a(lib_a-cxa_atexit.o)(__cxa_atexit): warning: interworking not enabled.
first occurrence: ./bin/Release/obj/src/main.o: Thumb call to ARM
/mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/bin/ld: /mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/lib/libc.a(lib_a-malloc.o)(free): warning: interworking not enabled.
first occurrence: /mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/lib/thumb/thumb2/interwork/libstdc++.a(del_op.o): Thumb call to ARM
/mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/bin/ld: /mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/lib/libc.a(lib_a-cxa_atexit.o)(__cxa_atexit): warning: interworking not enabled.
first occurrence: ./bin/Release/obj/src/main.o: Thumb call to ARM
/mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/bin/ld: /mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/lib/libc.a(lib_a-malloc.o)(free): warning: interworking not enabled.
first occurrence: /mnt/data/opt/develop/arm-elf-x86/bin/../lib/gcc/arm-elf/4.4.3/../../../../arm-elf/lib/thumb/thumb2/interwork/libstdc++.a(del_op.o): Thumb call to ARM
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 5 seconds)
0 errors, 63 warnings


далее
Цитата
arm-elf-objdump -p crt0.o

crt0.o: file format elf32-littlearm
private flags = 0: [APCS-32] [FPA float format]

и в проекте
Цитата
arm-elf-objdump -p main.o

main.o: file format elf32-littlearm
private flags = 0: [APCS-32] [FPA float format]


gcc-4.4.3 собран с поддержкой interwork,multilib и даже в его каталоге лежат наборы в подкаталогах thumb,interwork,fpu.

Подскажите, пожалуста, что я упустил.

Сообщение отредактировал smalcom - Mar 21 2010, 23:21
Причина редактирования: Многие десятки килобайт однотипных warnings убраны
Go to the top of the page
 
+Quote Post
smalcom
сообщение Mar 21 2010, 23:05
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



разобрался. взял конфу t-arm-elf с сайта gnuarm, библиотеку newlib взял старую(1.14)... похоже на то что сейчас оно тоже от фаз луны зависит, но вроде пока все без ошибок собирается
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Mar 22 2010, 07:26
Сообщение #3


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(smalcom @ Mar 22 2010, 03:05) *
newlib взял старую(1.14)... похоже на то что сейчас оно тоже от фаз луны зависит, но вроде пока все без ошибок собирается

Блин, newlib- гадость редкостная. Где бы найти время ее с нуля переписать?
Go to the top of the page
 
+Quote Post
klen
сообщение May 2 2010, 10:39
Сообщение #4


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Цитата(_Pasha @ Mar 22 2010, 11:26) *
Блин, newlib- гадость редкостная. Где бы найти время ее с нуля переписать?


в каком месте гадость то? не вся же

если не собирается это 99.99% косяг с компиллером, даже с его сборкой
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 08:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01379 секунд с 7
ELECTRONIX ©2004-2016