笔者近来要使用nvidia xavier nx控制大疆无人机,故使用OSDK开发,要linux编译时遇到种种问题,故此记录。
nvdia xavier nx jetpack版本为4.6.1
首先是cmake ..时发生找不到FFMPEG的错误:
笔者通过修改
Onboard-SDK/osdk-core/
Onboard-SDK/osdk-core/advanced-sensing/
Onboard-SDK/sample/platform/linux/
三个路径下的CMakeLists.txt的
find_package(FFMPEG REQUIRED)
注释掉就行。
接着make -j6又出现了部分函数不存在的问题
笔者此时发现ffmpeg版本不对,大疆官方依赖2.8.15版本,故删除原先的ffmpeg,去官网下载ffmpeg源码编译。
编译过程为:
./configure --enable-pic --enable-shared --prefix=/usr/local/ffmpeg
sudo make -j6
sudo make install
ffmpeg安装完成。
此时出现一大堆动态库未链接错误,笔者手动修改
Onboard-SDK/osdk-core/
Onboard-SDK/osdk-core/advanced-sensing/
Onboard-SDK/sample/platform/linux/
三个路径下的CMakeLists.txt
target_link_libraries(${PROJECT_NAME} /usr/local/ffmpeg/lib/libavcodec.so /usr/local/ffmpeg/lib/libavformat.so /usr/local/ffmpeg/lib/libavutil.so /usr/local/ffmpeg/lib/libswscale.so)
添加这段到
target_link_libraries(${PROJECT_NAME} PUBLIC ${FFMPEG_LIBRARIES})
之后,可能只有两个要改,具体哪两个忘了,大家搜一下有没有target_link_libraries就知道了。
笔者还手动设置
# 设置FFmpeg的路径
set(FFMPEG_INSTALL_DIR "/usr/local/ffmpeg")
# 添加FFmpeg的头文件路径
include_directories(${FFMPEG_INSTALL_DIR}/include)
# 添加FFmpeg的库文件路径
link_directories(${FFMPEG_INSTALL_DIR}/lib)
放在find_package(FFMPEG REQUIRED)之后,不知道有没有用。
总之结束了,很开心