学习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)

相关新闻

《数智方舟》项目对接文档

《数智方舟》项目对接文档

目前接入的七牛云平台,API 参考文档: 通用文档:https://linx.qiniu.com/docs/灵犀平台 OTA/协议接口(核心):https://linx.qiniu.com/docs/xrobot/platform/管理后台参考:https://xrobo.qiniu.co…

2026/7/24 7:06:43 阅读更多 →
【AI编程工具性价比终极对决】:Cursor vs GitHub Copilot vs Tabnine——12项开发场景实测,谁真香?

【AI编程工具性价比终极对决】:Cursor vs GitHub Copilot vs Tabnine——12项开发场景实测,谁真香?

更多请点击: https://intelliparadigm.com 第一章:AI编程工具市场格局与评测方法论 当前AI编程工具已从早期的代码补全插件演进为覆盖需求理解、架构设计、单元测试生成、调试辅助及文档同步的全生命周期协作系统。主流产品可分为三类:IDE原…

2026/7/24 7:15:45 阅读更多 →
C语言贪吃蛇实战:从零实现图形化游戏,掌握数据结构与EasyX图形库

C语言贪吃蛇实战:从零实现图形化游戏,掌握数据结构与EasyX图形库

很多C语言初学者在掌握了基础语法后,常常会陷入一个迷茫期:学了一堆变量、循环、函数,但不知道如何将它们组合起来,做出一个看得见、摸得着的程序。这种“纸上谈兵”的感觉很容易让人失去学习的动力。贪吃蛇,这个经典的…

2026/7/24 9:16:39 阅读更多 →

最新新闻

智能视频创作技术:从生成式AI到神经渲染的实践

智能视频创作技术:从生成式AI到神经渲染的实践

1. 智能视频创作的技术演进脉络2026年视频创作领域正在经历一场由底层技术驱动的范式转移。过去三年间,三个关键技术突破彻底改变了行业格局:首先是神经渲染技术从实验室走向工业化,使得实时生成影视级画质成为可能;其次是多模态大…

2026/7/25 6:27:52 阅读更多 →
从零到亿级调用:非科班AI工程师的成长路线

从零到亿级调用:非科班AI工程师的成长路线

## 1. 项目概述:一个非科班程序员的逆袭之路2016年夏天,我刚从机械工程专业毕业,连最简单的Python脚本都写不利索。八年后的今天,我坐在某大厂AI Lab的工位上,负责着日均调用量过亿的多模态推理系统。这中间发生了什么…

2026/7/25 6:27:52 阅读更多 →
C++内存管理进阶:深入解析new/delete重载原理与实践

C++内存管理进阶:深入解析new/delete重载原理与实践

1. 项目概述:为什么我们需要重载new和delete?在C的世界里,new和delete这两个运算符,对于每一个开发者来说都再熟悉不过了。它们是动态内存管理的基石,我们每天都在用。但你是否想过,当你在代码中写下MyClas…

2026/7/25 6:27:52 阅读更多 →
广州AI与数字经济案例集:智慧医疗与交通实战解析

广州AI与数字经济案例集:智慧医疗与交通实战解析

1. 项目背景与价值定位广州作为国家中心城市和粤港澳大湾区核心引擎,正在全力打造人工智能与数字经济试验区。这份案例集的编纂,本质上是对城市智能化转型进程的阶段性成果梳理。不同于普通的技术汇编,其特殊价值在于:聚焦垂直行业…

2026/7/25 6:27:52 阅读更多 →
AI实验室联创流失现象与Anthropic稳定性解析

AI实验室联创流失现象与Anthropic稳定性解析

1. 行业现象深度观察:AI实验室联创流失潮2023年对全球AI领域而言是个分水岭——当ChatGPT引爆生成式AI热潮时,一个反常现象正在顶级研究机构蔓延:OpenAI的Ilya Sutskever暂别一线,DeepMind的Mustafa Suleyman出走创办Inflection&a…

2026/7/25 6:27:52 阅读更多 →
强化学习在对话系统中的实时优化实践

强化学习在对话系统中的实时优化实践

1. 项目概述:当AI学会在对话中自我进化去年调试一个客服机器人时,我发现一个致命问题——每次对话都是独立事件。当用户第20次问"运费多少"时,AI依然要重新理解意图,就像失忆症患者重复回答相同问题。OpenClaw-RL的诞生…

2026/7/25 6:26:52 阅读更多 →

日新闻

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…

2026/7/25 0:00:35 阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…

2026/7/25 0:00:35 阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:00:35 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/25 5:08:22 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/25 5:13:53 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻