解決uboot編譯問題__aeabi_uidivmod'和o `__aeabi_uidiv'沒定義的錯誤
undefined reference to `__aeabi_uidivmod'和undefined reference to `__aeabi_uidiv' 這個錯誤在uboot的編譯過程中很容易出現
先分析這個原因 :
這兩個函式算是lib函式 具體應用在除法應用 如果程式中使用了 ‘/’ ‘%’這些運算 那就要用到這兩個函式了
最簡單的解決辦法就是將程式中的除法都改用移位運算避免使用底層庫
這裡增加一個討論為什麼有些程式同樣有除運算卻沒有這個錯誤提示
這就是編譯器的深層問題了:
先分析這個原因 :
這兩個函式算是lib函式 具體應用在除法應用 如果程式中使用了 ‘/’ ‘%’這些運算 那就要用到這兩個函式了
最簡單的解決辦法就是將程式中的除法都改用移位運算避免使用底層庫
這裡增加一個討論為什麼有些程式同樣有除運算卻沒有這個錯誤提示
這就是編譯器的深層問題了:
Uboot是個非GNU/Linux的程式,不是一個系統 而是一個裸機程式
而交叉編譯器arm-XXX-linux-gnueabi是GNU/Linux工具鏈,是可以正常編譯Linux核心等東西的,市區編譯系統的 系統裡面就帶有了libc ulibc 這些庫函式
當出現被0除的情況時,會呼叫__aeabi_ldiv0(即eabi版本的__div0),當在GNU/Linux系統中時,其會去觸發系統的SIGFPE,進而呼叫到對應的raise(3)函式。
而此處,由於Uboot不是Linux類程式,沒有對應的raise()函式,所以報錯找不到。
這裡提供另一種的解決方法就是在 對應的lowlevelinit.s中增加需要呼叫的那個raise()函式
這裡提供一個例子:相關文章
- Latex編譯錯誤:Unable to load picture or PDF file 問題解決編譯
- 編譯EJB出現錯誤的解決編譯
- 解決python中文編碼錯誤問題Python
- 編譯notepad++的錯誤解決編譯
- 執行無法解決的編譯錯誤編譯
- cmake編譯問題解決編譯
- Idea編譯錯誤解決辦法Idea編譯
- PHP編譯錯誤及解決辦法PHP編譯
- 一個C++巨集定義與列舉定義重複的編譯錯誤C++編譯
- 解決 ngrok 的 Domain 錯誤問題AI
- 解決:JPEGImageEncoder編譯問題編譯
- PHP編譯安裝時常見錯誤解決辦法,php編譯常見錯誤PHP編譯
- JNI命令列下編譯錯誤解決方案命令列編譯
- OpenCV1.0編譯錯誤解決辦法OpenCV編譯
- ios交叉比編譯android錯誤解決iOS編譯Android
- Android編譯通過,執行編譯錯誤問題總結Android編譯
- 設定autotrace的報錯問題解決
- 解決WiFi問題找它準沒錯WiFi
- 解決: gsrvr.exe錯誤,記憶體不能為讀,地圖白屏,I/O錯誤 問題。(轉載)VR記憶體地圖
- 編譯PHP的錯誤編譯PHP
- maven的編碼問題、解決和疑問Maven
- 微信支付錯誤兩個問題的解決:curl出錯,錯誤碼:60
- 交叉編譯庫依賴問題的解決方法編譯
- Oracle 常見的錯誤問題及解決方法Oracle
- scalatest在idea和maven中執行錯誤的問題解決IdeaMaven
- VS 編譯錯誤編譯
- Oracle 錯誤總結及問題解決 ORAOracle
- mysql insert語句錯誤問題解決MySql
- [Modules/zlibmodule.o] Error 1錯誤解決IBMError
- win7_iis報500.19和500.21錯誤問題解決Win7
- 解決儲存過程擷取錯誤的問題儲存過程
- 菜鳥調錯(八)—— Maven編譯錯誤:不相容的型別的解決方案Maven編譯型別
- 解決問題:Unix上g++編譯STL程式出錯——“libstdc++.so.5 =>(檔案沒有發現)”編譯C++
- 解決WiFi韌體編譯錯誤:STATION_INFO_ASSOC_REQ_IESWiFi編譯
- ipvs編譯錯誤編譯
- php編譯小錯誤PHP編譯
- python問題:IndentationError:expected an indented block錯誤解決PythonErrorBloC
- Ajax中“Sys未定義”錯誤的解決方法