跨工程編譯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
相關文章
- 記錄一些工程編譯問題編譯
- bea記憶體洩漏問題診斷記憶體
- JVM調優——Java動態編譯過程中的記憶體溢位問題JVMJava編譯記憶體溢位
- CMake編譯Qt工程時的問題編譯QT
- Java動態編譯優化——URLClassLoader 記憶體洩漏問題解決Java編譯優化記憶體
- Java動態編譯優化——ZipFileIndex記憶體洩漏問題分析解決Java編譯優化Index記憶體
- 【JVM故障問題排查心得】「記憶體診斷系列」JVM記憶體與Kubernetes中pod的記憶體、容器的記憶體不一致所引發的OOMKilled問題總結(上)JVM記憶體OOM
- 【JVM故障問題排查心得】「記憶體診斷系列」JVM記憶體與Kubernetes中pod的記憶體、容器的記憶體不一致所引發的OOMKilled問題總結(下)JVM記憶體OOM
- SQL SERVER的記憶體會不斷增加,問題分析(轉)SQLServer記憶體
- 記一次 rr 和硬體斷點解決記憶體踩踏問題斷點記憶體
- project中的堆疊記憶體,記憶體地址引用,gc相關問題Project記憶體GC
- 【問題記錄】—.NetCore 編譯問題NetCore編譯
- SQLServer記憶體問題分析SQLServer記憶體
- 探究 iOS 記憶體問題iOS記憶體
- 共享記憶體分段問題記憶體
- 記憶體溢位問題記憶體溢位
- vue專案編譯node記憶體溢位Vue編譯記憶體溢位
- [譯] Swift 中的記憶體洩漏Swift記憶體
- 記憶體分配問題處理記憶體
- 排查Java的記憶體問題Java記憶體
- 記憶體溢位的問題記憶體溢位
- aix 共享記憶體段問題AI記憶體
- 如何診斷 Java 中的記憶體洩露Java記憶體洩露
- [軟體工程]軟體中的量化問題軟體工程
- 告別記憶體OOM,解決MySQL記憶體增長問題記憶體OOMMySql
- Java記憶體模型常見問題Java記憶體模型
- ThreadLocal記憶體洩漏問題thread記憶體
- JVM堆外記憶體問題排查JVM記憶體
- 記憶體洩露引起的問題記憶體洩露
- AFN的記憶體洩漏問題記憶體
- ThreaLocal記憶體洩露的問題記憶體洩露
- JVM與記憶體洩露問題JVM記憶體洩露
- redisson記憶體洩漏問題排查Redis記憶體
- SPI編譯問題編譯
- perl 編譯問題!編譯
- jive編譯問題編譯
- tomcat記憶體溢位問題記錄Tomcat記憶體溢位
- 管理 Bitmap 記憶體(譯)記憶體