SLAMBOOK2踩坑记之:plotTrajectory.cpp中的undefined reference to symbol ‘glTexImage2D‘错误

今天动手运行了高翔《视觉SLAM十四讲》第3讲“三维空间刚体运动”中的代码部分,前面的部分非常顺利,但是到了3.7节可视化演示的部分,出现了非常棘手的问题,大约画了3个小时的时间才解决。趁热乎记录一下,并且把最终实现的代码贴在本博客中,以便于后面踩坑的时候能及时解决。

坑1:undefined reference to symbol

最主要的坑就是标题所示的那个:

undefined reference to symbol ‘glTexImage2D‘

完整的报错类似:

undefined reference to symbol 'glTexImage2D'
error adding symbols: DSO missing from

搜了一下原因,这篇博客写的比较清楚。最终,我采用了他所说的“可能是因为make编译未找到链接的共享库 LibGL.so文件 ,我们可以在CMakeLists.txt文件中的 target_link_libraries 语句中添加 LibGL.so”这个方法,事实证明是很管用的。具体来说,就是在CMakeLists.txt中添加这一句话:

target_link_libraries(plotTrajectory GL)

坑2:findPackage没有找到package

可能是因为路径的问题,源代码中的findpackage没有找到pangolin的头文件和库文件,于是会报类似下的错误:

undefined reference to 'panbolin'::CreateWindowAndBind(std...........blabla)

这显然是引用失败,我自己写了findPangolin.cmake文件(详情见下方),并且按照截图的方式组织的工程结构如下。
在这里插入图片描述
./cmake/FindPangolin.cmake

find_path(PANGOLIN_INCLUDE_DIR
	NAMES pangolin.h
	PATHS "/usr/local/include/pangolin/"
	)

find_library(PANGOLIN_LIBRARY
	NAMES pangolin
	PATHS "/usr/local/lib/"
	)

MESSAGE("THIS IS A DEBUG INFO.")
MESSAGE("${PANGOLIN_INCLUDE_DIR}")
MESSAGE("${PANGOLIN_LIBRARY}")
IF (PANGOLIN_INCLUDE_DIR AND PANGOLIN_LIBRARY)
	SET(PANGOLIN_FOUND TRUE)
	MESSAGE("PANGOLIN FOUND = TRUE")
ENDIF (PANGOLIN_INCLUDE_DIR AND PANGOLIN_LIBRARY)

IF (PANGOLIN_FOUND)
	IF(NOT PANGOLIN_FIND_QUIETLY)
		MESSAGE(STATUS "FOUND PANGOLIN_LIB:${PANGOLIN_LIBRARY}")
	ENDIF(NOT PANGOLIN_FIND_QUIETLY)
ELSE (PANGOLIN_FOUND)
	IF(PANGOLIN_FIND_REQUIRED)
		MESSAGE(FATAL_ERROR "COULD NOT FIND PANGOLIN LIBRARY.")
	ENDIF(PANGOLIN_FIND_REQUIRED)
ENDIF(PANGOLIN_FOUND)

./CMakeLists.txt

cmake_minimum_required( VERSION 2.8 )
set( CMAKE_BUILD_TYPE "Debug")
project(plotTrajectory)
set(CMAKE_MODULE_PATH ~/slam/examplesInTheBook/Chapter3/plotTrajectory/cmake)
MESSAGE("IWUCH DEBUG PROJECT_MODULE_PATH:${CMAKE_MODULE_PATH}")

find_package(Pangolin REQUIRED)

if(PANGOLIN_FOUND)
	include_directories(${
   PANGOLIN_INCLUDE_DIR})
	add_executable(plotTrajectory plotTrajectory.cpp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值