GNU ARM Embedded 툴체인 (gcc-arm-none-eabi-5_4)을 사용하는 Cortex-M4 (STM32F4-Discovery 보드) -2016q2). 내 코드 (HAL-lib, CMSIS, 시작 등)의 하드웨어 종속적 인 부분은 정적 라이브러리에 내장되어있어 응용 프로그램 코드에 연결하려고합니다. 내 응용 프로그램 코드에 main
기호가 포함되어 있으며 내 라이브러리에 _sbrk
기호가 포함되어 있습니다.'main'및 _sbrk에 대한 정의되지 않은 참조 - 자신의 정적 라이브러리에있는 시작 코드
engine_control/source/os/release/libkosmos-arm-stm32f4-discovery.a(_startup.o): In function `_start':
_startup.c:(.after_vectors+0x9a): undefined reference to `main'
과 :
/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'
내 링크 순서에 문제가있는 가정이 오류 메시지입니다. 다음은 내 링크 명령입니다.
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"
무엇이 잘못 되었나요?
실제로 연결 하시겠습니까? 'main' _supposed_는 어디에 있습니까? 그 링크 명령은 하나의 라이브러리 및 객체 파일을 포함하는 것 같습니다 ... – Notlikethat
고마워, 네 말이 맞아. 주 객체를 연결하는 것을 놓쳤습니다 (불행하게도 객체를 정의하고 makefile에서 객체를 사용하기 위해 여러 변수 이름을 사용했기 때문에). – user3592527