2014-04-14 48 views
0

我正在從Windows上的IAR中將代碼移植到OSX/GNU/CMake的STM32F4中。CMake,GNU和STM32:在測試編譯器時出現鏈接錯誤

我已經定義了一個工具鏈文件ARM.cmake來使用arm-none-eabi-g ++/gcc。當我運行cmake(引用工具鏈文件)時,當它嘗試鏈接簡單的測試程序時出現錯誤。它抱怨_exit()沒有被定義。

我知道exit()正在被調用,並且它調用了它希望在別處找到的_exit()。也許當我最終鏈接到我的RTOS時,它會有這個定義,或者我必須自己定義它。同時,我怎樣才能通過編譯器檢查?

集(CMAKE_SYSTEM_NAME通用)

集(CMAKE_SYSTEM_PROCESSOR STM32F407)

集(CMAKE_C_COMPILER臂-NONE-EABI-GCC)

集(CMAKE_CXX_COMPILER臂-NONE-EABI-G ++)

回答

0

只需添加一個空函數void _exit(int status){}。在這裏檢查是否需要更多信息:http://stm32discovery.nano-age.co.uk/open-source-development-with-the-stm32-discovery/getting-newlib-to-work-with-stm32-and-code-sourcery-lite-eabi

+0

謝謝。我理解這將如何幫助鏈接我的應用程序,但這會讓我通過編譯器檢查cmake執行的嗎?我不確定我是否理解檢查將如何知道我創建的包含我的空_exit()的某個對象文件或庫。 – Kenny

+0

而且我很抱歉:我還沒有閱讀鏈接。明天當我恢復這個項目時我會這樣做。以爲我會在料斗中得到這個問題,以防我原來的帖子不清楚。 – Kenny

+0

如果您處於鏈接階段,那麼您的源代碼已由編譯器檢查並編譯。或者我錯過了什麼? –

2

包括CMake包含文件CMakeForceCompiler和使用「FORCE」宏解決了這個問題。間接回答here

包括(CMakeForceCompiler)

集(CMAKE_SYSTEM_NAME通用)

集(CMAKE_SYSTEM_PROCESSOR STM32F407)

CMAKE_FORCE_C_COMPILER(ARM-NONE-EABI-GCC GNU)

CMAKE_FORCE_CXX_COMPILER(臂-none-eabi-g ++ GNU)

相關問題