无sudo权限Ubuntu14.04本地安装aruco 2.0.19及ROS编译问题求助
解决无sudo权限下安装Aruco库及ROS链接错误问题
一、无sudo权限下本地安装Aruco库
你不需要直接修改Makefile,CMake本身支持指定自定义安装路径,这是更标准且可靠的做法:
- 清理现有build目录(如果之前已生成过):
cd /hri/localdisk/markus/software/aruco-2.0.19 rm -rf build && mkdir build && cd build - CMake阶段指定安装路径:
用CMAKE_INSTALL_PREFIX参数指定一个你有写入权限的目录,比如专属的本地软件目录:
这个参数会把Aruco的头文件、库文件、CMake配置文件都安装到指定目录下,完全不会触碰cmake .. -DCMAKE_INSTALL_PREFIX=/hri/localdisk/markus/software/aruco_local_install/usr这类需要权限的系统路径。 - 编译并完成安装:
执行完成后,你会在指定目录下看到make make installinclude/aruco、lib、lib/cmake/aruco这些子目录,所有文件都在你的可控范围内。
二、解决ROS包的链接错误
你的链接错误核心原因是没有正确链接Aruco的库文件——之前的target_link_libraries里写的是目录路径,而非实际的库文件。调整你的CMakeLists.txt如下:
修改后的关键配置片段:
cmake_minimum_required(VERSION 2.8.3) PROJECT(ros_aruco) FIND_PACKAGE(catkin REQUIRED COMPONENTS roscpp tf std_msgs sensor_msgs geometry_msgs message_generation genmsg cv_bridge image_transport) # 1. 指定本地安装的Aruco根目录(和cmake时的CMAKE_INSTALL_PREFIX保持一致) set(ARUCO_INSTALL_PATH "/hri/localdisk/markus/software/aruco_local_install") # 让CMake能自动找到Aruco的CMake配置文件 set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${ARUCO_INSTALL_PATH}) # 2. 正常查找Aruco库(现在CMake会定位到本地安装的版本) FIND_PACKAGE(aruco REQUIRED) FIND_PACKAGE(OpenCV REQUIRED) INCLUDE(FindPkgConfig) SET(ROS_BUILD_TYPE Release) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -march=core-avx-i -O2") # 3. 包含头文件目录(使用find_package生成的变量,避免硬编码) include_directories( ${catkin_INCLUDE_DIRS} ${ARUCO_INCLUDE_DIRS} ) add_executable(ros_aruco src/ros_aruco.cpp ) add_dependencies(ros_aruco ${catkin_EXPORTED_TARGETS}) # 4. 链接库文件(关键:用${ARUCO_LIBRARIES}替换之前的目录路径) target_link_libraries(ros_aruco ${catkin_LIBRARIES} ${OpenCV_LIBS} ${ARUCO_LIBRARIES} )
额外注意事项:
- 如果你之前已经编译过这个ROS包,先删除包的
build和devel目录,重新执行catkin_make或catkin build,避免旧的CMake缓存干扰新配置。 - 确保
ARUCO_INSTALL_PATH和你安装Aruco时指定的CMAKE_INSTALL_PREFIX完全一致,路径拼写不能出错。
错误原因说明
你遇到的undefined reference是链接器报错:编译器能找到Aruco的头文件(所以没有编译错误),但链接器找不到实现这些函数的库文件(.so或.a)——因为你没有把Aruco的库文件路径传给链接器。使用find_package(aruco REQUIRED)后,CMake会自动设置ARUCO_LIBRARIES变量,指向正确的库文件路径,解决链接问题。
内容的提问来源于stack exchange,提问作者sqp_125
相关产品推荐
相关产品推荐

