Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: [РЕШЕНО] Не линкуется проект на C++ для Cortex-M3
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
smalcom
Сначала всё было написано на Си, комплировалось, линковалось и работало. Добавил простейший 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
разобрался. взял конфу t-arm-elf с сайта gnuarm, библиотеку newlib взял старую(1.14)... похоже на то что сейчас оно тоже от фаз луны зависит, но вроде пока все без ошибок собирается
_Pasha
Цитата(smalcom @ Mar 22 2010, 03:05) *
newlib взял старую(1.14)... похоже на то что сейчас оно тоже от фаз луны зависит, но вроде пока все без ошибок собирается

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


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

если не собирается это 99.99% косяг с компиллером, даже с его сборкой
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.