xavier nx上编译fast-livo过程中出现的问题记录
编译开始要参考这个网站来编译
文档预览 - Gitee.com
坐着貌似实在nuc上编译的,本人是在xavier nx上编译的,所以还是有点差异,也遇到了网页中所没有遇到的问题。现在把解决问题的列表列出来:
一、安装了海康相机后,再安装fast-lio等用到pcl库的工程,就一直出现liuusb错误。
/usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/9/../../../aarch64-linux-gnu/libpcl_io.so: undefined reference to `libusb_set_option'
尝试了各种链接,最后用这一个解决了。
libpcl_io.so: undefined reference to `libusb_set_option'报错解决 | 文锦落
就是直接把mvs中的libusb直接删了
二、编译的时候,出现了“c++: fatal error: Killed signal terminated program cc1plus“,个人感觉,应该是编译的时候太占内存了,内存不够了。
解决方法:关掉网页,关掉vscode
三、编译vikit库的时候,出现了
cc1plus: error: unknown value ‘armv7-a’ for ‘-march’
cc1plus: note: valid arguments are: armv8-a armv8.1-a armv8.2-a armv8.3-a armv8.4-a armv8.5-a native; did you mean ‘armv8-a’?
打开vikit工程中的common的文件夹中的CMakeLists.txt,改成这个样子
# Set build flags. Set IS_ARM on odroid board as environment variable
SET(CMAKE_CXX_FLAGS "-Wall -D_LINUX -D_REENTRANT -march=native -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unknown-pragmas")
#IF(DEFINED ENV{ARM_ARCHITECTURE})SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv8-a")
# SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=neon -march=armv7-a")
#ELSE()
# SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmmx -msse -msse -msse2 -msse3 -mssse3")
四、opencv的问题
/home/slamugv/ws_fastlivo/src/rpg_vikit/vikit_common/src/pinhole_camera.cpp:112:59: error: ‘CV_INTER_LINEAR’ was not declared in this scope112 | cv::remap(raw, rectified, undist_map1_, undist_map2_, CV_INTER_LINEAR);| ^~~~~~~~~~~~~~~
/home/slamugv/ws_fastlivo/src/rpg_vikit/vikit_common/src/homography.cpp: In member function ‘void vk::Homography::calcFromMatches()’:
/home/slamugv/ws_fastlivo/src/rpg_vikit/vikit_common/src/homography.cpp:48:54: error: ‘CV_RANSAC’ was not declared in this scope48 | cv::Mat cvH = cv::findHomography(src_pts, dst_pts, CV_RANSAC, 2./error_multiplier2);| ^~~~~~~~~
/home/slamugv/ws_fastlivo/src/rpg_vikit/vikit_common/src/img_align.cpp: In member function ‘virtual void vk::ForwardCompositionalSE3::finishIteration()’:
/home/slamugv/ws_fastlivo/src/rpg_vikit/vikit_common/src/img_align.cpp:237:34: error: ‘CV_WINDOW_AUTOSIZE’ was not declared in this scope237 | cv::namedWindow("residuals", CV_WINDOW_AUTOSIZE);| ^~~~~~~~~~~~~~~~~~
/home/slamugv/ws_fastlivo/src/rpg_vikit/vikit_common/src/img_align.cpp: In member function ‘virtual void vk::SecondOrderMinimisationSE3::finishIteration()’:
/home/slamugv/ws_fastlivo/src/rpg_vikit/vikit_common/src/img_align.cpp:437:34: error: ‘CV_WINDOW_AUTOSIZE’ was not declared in this scope437 | cv::namedWindow("residuals", CV_WINDOW_AUTOSIZE);
也好改:
CV_INTER_LINEAR ---->cv::INTER_LINEAR
CV_WINDOW_AUTOSIZE ---->cv::WINDOW_AUTOSIZE
CV_RANSAC ---->cv::RANSAC
五、编译这个fast-livo这个程序的时候,仍然出现了/usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/9/../../../aarch64-linux-gnu/libpcl_io.so: undefined reference to `libusb_set_option'的问题,解决方法就是:
在.bashrc这个文件最末尾加上
export LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu:$LD_LIBRARY_PATH
然后
source ~/.bashrc
六、再次编译fast-livo库,编译就成功了。