博客專(zhuān)欄

EEPW首頁(yè) > 博客 > fatal error: gnu/stubs-soft.h: No such file or directory

fatal error: gnu/stubs-soft.h: No such file or directory

發(fā)布人:電子禪石 時(shí)間:2023-03-20 來(lái)源:工程師 發(fā)布文章

在給一個(gè)嵌入式平臺(tái)開(kāi)發(fā)時(shí),編譯項(xiàng)目出現(xiàn)如題所示錯(cuò)誤。通常情況下這種問(wèn)題表明某個(gè)文件缺失,但是先別急著去找那個(gè)文件或者從其他地方拷貝過(guò)來(lái)用。

參考來(lái)源1:https://blog.csdn.net/wuyusheng314/article/details/79428996

參考博文與我的情況相似,不過(guò)我是使用clion進(jìn)行開(kāi)發(fā)的,而clion使用cmake進(jìn)行代碼組織,這樣免去了寫(xiě)makefile的痛苦。不過(guò)問(wèn)題的本質(zhì)是一樣的。


從該文件看,引入stubs-soft.h頭文件需要保證沒(méi)有定義__ARM_PCS_VFP宏。

同樣引用參考答案的一段內(nèi)容:

cc has a builtin define to denote hard abi when in use, e.g. when using -mfloat-abi=hard it will define __ARM_PCS_VFP to 1 and therefore we should check that to determine which calling convention is in use and not __VFP_FP__ which merely indicates presence of VFP unit.

即,這個(gè)宏是通過(guò)編譯參數(shù)來(lái)定義的,所以需要在編譯參數(shù)中加上-mfloat-abi=hard 或者 -mfloat-abi=soft,具體的需要依據(jù)您使用的平臺(tái)來(lái)決定。而使用cmake的話可以設(shè)定如下參數(shù):

  1. set(CMAKE_C_FLAGS "-march=armv7-a -marm -mfpu=vfp -mfloat-abi=hard")

  2. set(CMAKE_CXX_FLAGS "-march=armv7-a -marm -mfpu=vfp -mfloat-abi=hard")

注:前面兩個(gè)參數(shù)是架構(gòu)相關(guān)的,并不影響此問(wèn)題。

fatal error: gnu/stubs-soft.h: No such file or directory – OpenMind (lxins.com)

*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



關(guān)鍵詞: gcc

相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉