STM32F4 마이크로 컨트롤러 용 C++ 애플리케이션을 컴파일 중입니다. 내 모든 코드가 성공적으로 컴파일하지만 링크 단계는 다음과 같은 오류와 함께 실패합니다 내가 주없이 응용 프로그램을 컴파일하려고입니다 주요 오류로 정의되지 않은 참조, 의 일반적인 원인을 잘 알고LoopFillZerobss에 정의되지 않은 참조가 있습니다.
/tmp/ccGj7Wge.o: In function `LoopFillZerobss':
(.text.Reset_Handler+0x32): undefined reference to `main'
collect2: error: ld returned 1 exit status
선물. 그러나 main.cpp가 있고 당연히 main 함수가 있습니다. main.o로 컴파일되며이 파일은 컴파일하는 동안 으로 생성 된 다른 오브젝트 파일과 링크됩니다.
STM32F407에 크로스 컴파일 중이므로 베어 메탈을 실행 중입니다.
누구든지이 사실에 대해 통찰력을 갖고 있습니까? 아니면이 오류를 본적이 있습니까? LoopFillZerobss 함수를 볼 수있는 유일한 곳은 보드의 어셈블리 시작 파일입니다.
그래서 코드에'main'이 없습니까? 'LoopFillZerobss'는 아마도'main' 이전의 초기화 코드의 일부일 것입니다 - 전역 변수를 0으로 설정해야하기 때문에 C 및 C++에서 block-storage-section을 0으로 채우는 것이 초기화의 일부입니다. –