Ich arbeite an einem Cortex-M4 (STM32F4-Discovery-Board) mit der GNU ARM Embedded-Toolchain (gcc-arm-none-eabi-5_4 -2016q2). Der hardwareabhängige Teil meines Codes (HAL-lib, CMSIS, Startup usw.) ist in einer statischen Bibliothek erstellt, die ich mit meinem Anwendungscode verknüpfen möchte. Mein Anwendungscode enthält ein main
Symbol und meine Bibliothek enthält ein _sbrk
Symbol. Dies sind die Fehlermeldungen:Nicht definierter Verweis auf `main 'und _sbrk - Startcode in der eigenen statischen Bibliothek
engine_control/source/os/release/libkosmos-arm-stm32f4-discovery.a(_startup.o): In function `_start':
_startup.c:(.after_vectors+0x9a): undefined reference to `main'
und:
/opt/gcc-arm-none-eabi-5_4-2016q2/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/lib/armv7e-m/fpu/libc_nano.a(lib_a-sbrkr.o): In function `_sbrk_r':
sbrkr.c:(.text._sbrk_r+0xc): undefined reference to `_sbrk'
Ich nehme an, es ist etwas falsch mit meinem Link bestellen. Hier ist mein Link Befehl:
arm-none-eabi-g++ -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -ffreestanding -fno-move-loop-invariants -Werror -Wunused -Wuninitialized -Wall -Wextra -Wmissing-declarations -Wconversion -Wpointer-arith -Wpadded -Wshadow -Wlogical-op -Waggregate-return -Wfloat-equal -T mem.ld -T libs.ld -T sections.ld -nostartfiles -Xlinker --gc-sections -L"config/linker" --specs=nano.specs -L/home/tkl/git/engine_control/source/os/release -Wl,-Map,"/home/tkl/git/engine_control/release/map/arm/release/.map" -lkosmos-arm-stm32f4-discovery -o "/home/tkl/git/engine_control/release/execute/arm/release/.elf"
Was mache ich falsch?
Was verknüpfen Sie eigentlich? Wo ist "main" _supposed_ zu sein? Dieser Linkbefehl scheint nur eine Bibliothek und keine Objektdateien zu enthalten ... – Notlikethat
Danke, ja, Sie haben Recht. Ich habe es versäumt, mein Hauptobjekt zu verknüpfen (weil ich leider verschiedene Variablennamen für die Definition von Objekten und die Verwendung von Objekten in meinem Makefile verwendet habe). – user3592527