ndk arm64編譯遇到問題

2021-07-27 11:01:28 字數 1072 閱讀 4555

最近專案要求支援arm armv7 以及arm64的平台。在編譯中發現幾個問題實在讓人撓頭。現將解決經驗分享如下:

1 使用gunstl還是stlport

先前對c++的依賴均使用stlport庫,在支援arm64後,發現編譯時一直在報cmath中的錯誤。最後查詢發現是專案中有引用導致,stlport是輕量級的c++庫,但是沒有gnustl對c++支援的到位。選用gnustl後,問題解決。如果想使用stlport還是要謹慎使用c++一些高階特性。

2 是__captured::__capture_isfinite 還是 isfinite

3 使用curl庫出現了__curl_rule_01__ is negative問題

在編譯arm64的curl庫時出現了__curl_rule_01__ is negative問題,發現是#define curlchkszeq(t, s) sizeof(t) == s ? 1 : -1,具體就是curlchkszeq(long, curl_sizeof_long)計算出了問題。也就是對對curl_sizeof_long的定義與系統得到long長度不一致。型別通過sizeof計算時不匹配導致。原有curlbuild.h中對各個arm平台定義不夠全面。針對arm64在curlbuild.h中增加:

#if defined(__aarch64__)

#    define curl_sizeof_long           8

#    define curl_typeof_curl_off_t     long

#    define curl_format_curl_off_t     "ld"

#    define curl_format_curl_off_tu    "lu"

#    define curl_format_off_t          "%ld"

#    define curl_sizeof_curl_off_t     8

#    define curl_suffix_curl_off_t     l

#    define curl_suffix_curl_off_tu    ul

#endif

處理。

遇到問題後。。。

今天被徹底的打擊了,很想從辦公樓直接跳下去。二周了,二周的時間都花在了載入乙個新的controller driver,在專案裡,這個是最底層的usb驅動,所以它沒有工作,等於晶元就是一堆廢鐵。在上一周還不是很著急,但是這周徹底急了,team leader已經忍受不了整組人對這那個不能工作的 束手無策...

hive on tez遇到問題

一 環境hive0.13,tez0.5.0 二 執行異常如下 return code 101 from org.apache.hadoop.hive.ql.exec.tez.teztask.org.apache.tez.mapreduce.hadoop.mrhelpers.getbasemrconf...

linux遇到問題

rabbitmq 服務啟動問題 bf localhost sbin sudo service rabbitmq server start redirecting to bin systemctl start rabbitmq server.service failed to start rabbit...