Module無法載入,debug message出現Unknown-symbol-__aeabi_uldivmod
的解決方式
問題
在Ubuntu桌電上cross compile給bananapi image時,並沒有出現編譯錯誤
然而bananapi開機時出現某個module載入失敗,並出現Unknown-symbol-__aeabi_uldivmod
發生原因
在32-bit CPU上進行64-bit變數的除法運算,例如:
1 | u64 a1 = 1000; |
解決方式
使用do_div()
進行除法運算(定義於<asm/div64.h>
)
1 |
|
do_div()
的回傳值是餘數,相除的結果會被保存到被除數(當作指標傳入,如下所示),故如果不想原本的值被取代掉,要使用一個暫存變數。
1 |