跨工程編譯orbslam3記憶體中斷問題
orbslam3 獨自編譯執行記憶體中斷問題
最近在專案中需要在自己的資料集下跑通orbslam3,在完成編譯後執行程式時發現會報(segmentation fault)記憶體中斷問題,檢查程式碼發現輸入的image和imu都是正常的,中斷在g2o內部,最後發現是cmake中一個編譯選項導致的
在編譯g2o時,有段程式碼設定了編譯選項 -march=native,這個選項決定了g2o使用eigen時內部矩陣的對齊方式,在使用orbslam3時,cmakelist中的match方式需要和g2o中的march方式保持一致,不然在執行時會導致g2o內部記憶體中斷錯誤
# Compiler specific options for gcc
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -march=native")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -march=native")
# SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
# SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3")
對應程式碼位置分別在
g2o cmakelist 57~60行
orbslam3 cmakelist 12~16行
orbslam2 issue:https://github.com/raulmur/ORB_SLAM2/pull/844
g2o issue:https://github.com/RainerKuemmerle/g2o/pull/314
相關文章
- 記錄一些工程編譯問題編譯
- JVM調優——Java動態編譯過程中的記憶體溢位問題JVMJava編譯記憶體溢位
- Java動態編譯優化——URLClassLoader 記憶體洩漏問題解決Java編譯優化記憶體
- 【問題記錄】—.NetCore 編譯問題NetCore編譯
- CMake編譯Qt工程時的問題編譯QT
- Java動態編譯優化——ZipFileIndex記憶體洩漏問題分析解決Java編譯優化Index記憶體
- 【JVM故障問題排查心得】「記憶體診斷系列」JVM記憶體與Kubernetes中pod的記憶體、容器的記憶體不一致所引發的OOMKilled問題總結(上)JVM記憶體OOM
- 【JVM故障問題排查心得】「記憶體診斷系列」JVM記憶體與Kubernetes中pod的記憶體、容器的記憶體不一致所引發的OOMKilled問題總結(下)JVM記憶體OOM
- 記一次 rr 和硬體斷點解決記憶體踩踏問題斷點記憶體
- project中的堆疊記憶體,記憶體地址引用,gc相關問題Project記憶體GC
- SQLServer記憶體問題分析SQLServer記憶體
- 探究 iOS 記憶體問題iOS記憶體
- vue專案編譯node記憶體溢位Vue編譯記憶體溢位
- ThreadLocal記憶體洩漏問題thread記憶體
- 排查Java的記憶體問題Java記憶體
- 記憶體分配問題處理記憶體
- [譯] Swift 中的記憶體洩漏Swift記憶體
- 告別記憶體OOM,解決MySQL記憶體增長問題記憶體OOMMySql
- libmemcached編譯問題IBM編譯
- SPI編譯問題編譯
- C結構體中資料的記憶體對齊問題結構體記憶體
- JVM堆外記憶體問題排查JVM記憶體
- Java記憶體模型常見問題Java記憶體模型
- redisson記憶體洩漏問題排查Redis記憶體
- 管理 Bitmap 記憶體(譯)記憶體
- JavaScript 工作原理之三-記憶體管理及如何處理 4 類常見的記憶體洩漏問題(譯)JavaScript記憶體
- mysql中CPU或記憶體利用率過高問題MySql記憶體
- vector clear() 方法 記憶體釋放問題記憶體
- Windbg分析高記憶體佔用問題記憶體
- iOS 問題整理07----記憶體管理iOS記憶體
- 記憶體和棧溢位問題定位記憶體
- 小程式白屏問題和記憶體研究記憶體
- 解決git記憶體洩露問題Git記憶體洩露
- Java記憶體問題 及 LeakCanary 原理分析Java記憶體
- 解決golang 的記憶體碎片問題Golang記憶體
- Java記憶體模型FAQ(五)舊的記憶體模型有什麼問題?Java記憶體模型
- [譯]理解閉包中的記憶體洩漏記憶體
- 翻譯 | 理解Java中的記憶體洩漏Java記憶體