最近專案要求支援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...