当前位置: 首页 > news >正文

学习slam14讲,在wsl里配置Pangolin遇到tiff包链接不上的问题 并解决

打开文件 Pangolin/components/pango_image/CMakeLists.txt

这是原来的文件

get_filename_component(COMPONENT ${CMAKE_CURRENT_LIST_DIR} NAME) find_package(Eigen3 REQUIRED NO_MODULE) target_compile_definitions(${COMPONENT} PUBLIC HAVE_EIGEN) option(BUILD_PANGOLIN_LIBPNG "Build support for libpng image input" ON) if(BUILD_PANGOLIN_LIBPNG) find_package(PNG QUIET) if(PNG_FOUND) target_compile_definitions(${COMPONENT} PRIVATE HAVE_PNG) target_include_directories(${COMPONENT} PRIVATE ${PNG_INCLUDE_DIR} ) target_link_libraries(${COMPONENT} PRIVATE ${PNG_LIBRARY} ${ZLIB_LIBRARY}) message(STATUS "libpng Found and Enabled") endif() endif() option(BUILD_PANGOLIN_LIBJPEG "Build support for libjpeg image input" ON) if(BUILD_PANGOLIN_LIBJPEG) find_package(JPEG QUIET) if(JPEG_FOUND) target_compile_definitions(${COMPONENT} PRIVATE HAVE_JPEG) target_include_directories(${COMPONENT} PRIVATE ${JPEG_INCLUDE_DIR} ) target_link_libraries(${COMPONENT} PRIVATE ${JPEG_LIBRARY}) message(STATUS "libjpeg Found and Enabled") endif() endif() option(BUILD_PANGOLIN_LIBTIFF "Build support for libtiff image input" ON) if(BUILD_PANGOLIN_LIBTIFF) find_package(TIFF QUIET) if(TIFF_FOUND) target_compile_definitions(${COMPONENT} PRIVATE HAVE_LIBTIFF) target_link_libraries(${COMPONENT} PRIVATE TIFF::TIFF) message(STATUS "libtiff Found and Enabled") endif() endif() option(BUILD_PANGOLIN_LIBOPENEXR "Build support for libopenexr image input" ON) if(BUILD_PANGOLIN_LIBOPENEXR) find_package(OpenEXR 3 QUIET) if(OpenEXR_FOUND) target_compile_definitions(${COMPONENT} PRIVATE HAVE_OPENEXR) target_link_libraries(${COMPONENT} PRIVATE OpenEXR::OpenEXR) target_compile_options(${COMPONENT} PRIVATE $<$<OR:$<CXX_COMPILER_ID:AppleClang>,$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:GNU>>: -Wno-deprecated-register -Wno-deprecated> ) # https://github.com/stevenlovegrove/Pangolin/issues/677 set_target_properties(${COMPONENT} PROPERTIES CXX_STANDARD 11) message(STATUS "libopenexr Found and Enabled") endif() endif() option(BUILD_PANGOLIN_LZ4 "Build support for liblz4 compression" ON) if(BUILD_PANGOLIN_LZ4) find_package(Lz4 QUIET) if(Lz4_FOUND) target_compile_definitions(${COMPONENT} PRIVATE HAVE_LZ4) target_include_directories(${COMPONENT} PRIVATE ${Lz4_INCLUDE_DIRS} ) target_link_libraries(${COMPONENT} PRIVATE ${Lz4_LIBRARIES}) message(STATUS "liblz4 Found and Enabled") endif() endif() option(BUILD_PANGOLIN_ZSTD "Build support for libzstd compression" ON) if(BUILD_PANGOLIN_ZSTD) find_package(zstd QUIET) if(zstd_FOUND) target_compile_definitions(${COMPONENT} PRIVATE HAVE_ZSTD) target_include_directories(${COMPONENT} PRIVATE ${zstd_INCLUDE_DIR} ) target_link_libraries(${COMPONENT} PRIVATE ${zstd_LIBRARY}) message(STATUS "libzstd Found and Enabled") endif() endif() option(BUILD_PANGOLIN_LIBRAW "Build support for raw images (libraw)" ON) if(BUILD_PANGOLIN_LIBRAW) find_package(libraw QUIET) if(libraw_FOUND) target_compile_definitions(${COMPONENT} PRIVATE HAVE_LIBRAW) target_include_directories(${COMPONENT} PRIVATE ${libraw_INCLUDE_DIR} ) target_link_libraries(${COMPONENT} PRIVATE ${libraw_LIBRARIES}) message(STATUS "libraw Found and Enabled") endif() endif() target_sources( ${COMPONENT} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/src/pixel_format.cpp ${CMAKE_CURRENT_LIST_DIR}/src/image_io.cpp ${CMAKE_CURRENT_LIST_DIR}/src/image_io_exr.cpp ${CMAKE_CURRENT_LIST_DIR}/src/image_io_jpg.cpp ${CMAKE_CURRENT_LIST_DIR}/src/image_io_lz4.cpp ${CMAKE_CURRENT_LIST_DIR}/src/image_io_packed12bit.cpp ${CMAKE_CURRENT_LIST_DIR}/src/image_io_pango.cpp ${CMAKE_CURRENT_LIST_DIR}/src/image_io_png.cpp ${CMAKE_CURRENT_LIST_DIR}/src/image_io_ppm.cpp ${CMAKE_CURRENT_LIST_DIR}/src/image_io_raw.cpp ${CMAKE_CURRENT_LIST_DIR}/src/image_io_tga.cpp ${CMAKE_CURRENT_LIST_DIR}/src/image_io_bmp.cpp ${CMAKE_CURRENT_LIST_DIR}/src/image_io_zstd.cpp ${CMAKE_CURRENT_LIST_DIR}/src/image_io_libraw.cpp ${CMAKE_CURRENT_LIST_DIR}/src/image_io_tiff.cpp ) set_target_properties( ${COMPONENT} PROPERTIES VERSION ${PANGOLIN_VERSION} SOVERSION ${PANGOLIN_VERSION_MAJOR} ) target_link_libraries(${COMPONENT} PUBLIC pango_core Eigen3::Eigen) target_include_directories(${COMPONENT} PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include> $<INSTALL_INTERFACE:include> ) install(DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/include" DESTINATION ${CMAKE_INSTALL_PREFIX} )

因为这个文件专门负责pango_image组件的构建,pango_image是一个处理图像加载/保存的库,它需要 TIFF、JPEG、PNG 等库来支持各种格式。当这些库没有正确链接时,就会报 undefined reference。 所以我门只需要强制链接tiff就可以 下面是修改后的代码段

target_link_libraries(${COMPONENT} PUBLIC pango_core Eigen3::Eigen tiff)

然后再再终端运行

rm -rf build mkdir build && cd build cmake .. make -j$(nproc)
http://www.jsqmd.com/news/1227869/

相关文章:

  • 服务器操作部署
  • C语言实现非线性方程迭代法求解:从不动点迭代到牛顿法
  • 基于Visual C++的GIS系统开发:从核心原理到工程实践
  • WPS整改背后的办公软件隐私与信任重建
  • Claude Fable 5实测:AI能力突破与安全限制的平衡
  • 收藏级陈皮筛选:为何梅江天马等核心产区更值得参考
  • AI时代人类不可替代的八大职业底层逻辑
  • 深圳黄金变现进入“极速时代”:添价收等7家机构获权威认证,全程无损检测按克结算 - 二奢分享官
  • 黑苹果USB端口定制实战:从硬件识别到完美驱动
  • HsMod:重新定义你的炉石传说体验,告别繁琐操作的时代
  • 如何用开源工具重构你的数字音乐主权?QMCDecode技术深度解析
  • TurtleCoin社区生态:如何参与这个活跃的开源项目
  • ipatool终极指南:3分钟掌握iOS应用IPA文件下载技巧
  • SQL原生可视化:用一条可审计SELECT实现可信数据图表
  • 光谷财税哪家靠谱:高新技术企业如何选择财税外包
  • 免费获取专业足球数据的终极解决方案:Understat异步Python包完整指南
  • 【Cursor爬虫生产力革命】:用AI理解网页结构、自动生成BeautifulSoup/Scrapy代码,效率碾压手动编码
  • 终极指南:使用yamllint在5分钟内彻底解决YAML配置文件质量问题
  • 终极指南:3个简单步骤解决FPSLocker常见问题
  • SGLang多模态引擎:构建智能视觉语言应用的全栈解决方案
  • Windows HEIC缩略图插件:终极解决方案,让iPhone照片在Windows中完美预览
  • 论文格式排版太头疼?2026年这款自动排版工具3分钟搞定毕业论文格式
  • 【JAVA毕设源码分享】基于springboot非物质文化遗产再创新系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 鸣潮自动化革命:智能游戏伙伴如何解放你的双手
  • Jaws:从零构建一个“五脏俱全“的 Java RPC 框架
  • 解决Windows Python编译错误:安装VC++ Build Tools与使用预编译轮子
  • # 企业如何提升应用研发效能和质量?从“靠人“到“靠体系“的进化之路
  • 《派出你的AI同事:WorkBuddy案例实战》001:需求文档自动生成(案例)
  • Linux桌面环境选型指南与性能优化实战
  • day01-FastAPI初识(补充day0.5)以及Tortoise-ORM