C++ ROS catkin构建-找不到共享库
我正在尝试catkin构建此ROS包,但它无法构建“rl_实验”,出现以下错误:C++ ROS catkin构建-找不到共享库,c++,linker,ros,catkin,C++,Linker,Ros,Catkin,我正在尝试catkin构建此ROS包,但它无法构建“rl_实验”,出现以下错误: /usr/bin/ld: cannot find -lagentlib /usr/bin/ld: cannot find -lenvlib collect2: error: ld returned 1 exit status 我用的是ROS。共享库确实存在于文件夹/texplore/devel/.private/rl_env/lib/和/texplore/devel/.private/rl_agent/lib/中
/usr/bin/ld: cannot find -lagentlib
/usr/bin/ld: cannot find -lenvlib
collect2: error: ld returned 1 exit status
我用的是ROS。共享库确实存在于文件夹/texplore/devel/.private/rl_env/lib/和/texplore/devel/.private/rl_agent/lib/中,符号链接位于/texplore/devel/lib/
我尝试了以下方法:
(1) 导出/texplore/devel/lib/到LD\u库路径
(2) 向/texplore/src/rl_实验/src中的库添加符号链接
(3) 将库路径添加到目标链接库
target_link_libraries(experiment agentlib envlib ${catkin_LIBRARIES}
"/media/usr/texplore/devel/lib/libagentlib.so"
"/media/usr/texplore/devel/lib/libenvlib.so")
(4) 设置链接器的搜索路径
SET(CMAKE_EXE_LINKER_FLAGS
"${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath -Wl,/media/usr/texplore/devel/lib/")
它不起作用。最后,我将符号链接添加到/usr/local/lib中,它起了作用。但我不希望此文件夹中有符号链接
因此,链接器只是不搜索构建树。我的问题是,为什么catkin不在catkin_库中添加链接器路径?我以前构建过ROS软件包,但无法理解为什么这个软件包不起作用。我遇到了同样的问题。我根据ROS答案和catkin_packages宏的generic CMakeLists.txt文件中的以下注释做出了以下更改:
## LIBRARIES: libraries you create in this project that dependent projects also need
我做了一些事情来解决这个问题
LIBRARIES-agentlib
到rl\u-agent/CMakeLists.txt
文件中的catkin\u-packages
宏。这使得agentlib
库稍后可用于rl\u实验
rl_env/CMakeLists.txt
文件中的catkin_packages
宏中添加了LIBRARIES envlib
。这使得envlib
库稍后可用于rl\u实验
rl\u实验/CMakeLists.txt
文件中的target\u link\u库
宏中删除了agentlib
和envlib
。这些是没有必要的rl\u代理
和rl\u环境
包列在rl\u实验/CMakeLists.txt的find\u包
宏中
我遇到了同样的问题。我根据ROS答案和catkin_packages宏的generic CMakeLists.txt文件中的以下注释做出了以下更改:
## LIBRARIES: libraries you create in this project that dependent projects also need
我做了一些事情来解决这个问题
LIBRARIES-agentlib
到rl\u-agent/CMakeLists.txt
文件中的catkin\u-packages
宏。这使得agentlib
库稍后可用于rl\u实验
rl_env/CMakeLists.txt
文件中的catkin_packages
宏中添加了LIBRARIES envlib
。这使得envlib
库稍后可用于rl\u实验
rl\u实验/CMakeLists.txt
文件中的target\u link\u库
宏中删除了agentlib
和envlib
。这些是没有必要的rl\u代理
和rl\u环境
包列在rl\u实验/CMakeLists.txt的find\u包
宏中
我试过了,但还是有同样的错误。从克隆github开始,我已经复制了好几次了。我正在使用最新的柳絮工具。如果我提供我的CMakeLists.txt文件会有帮助吗?是的,那肯定会有帮助。原始答案中添加了代码片段。我希望这有帮助!非常感谢。添加target_link_库(实验${catkin_libraries})(第3项)为我做到了这一点。我已经尝试过了,但仍然出现同样的错误。Bummer。从克隆github开始,我已经复制了好几次了。我正在使用最新的柳絮工具。如果我提供我的CMakeLists.txt文件会有帮助吗?是的,那肯定会有帮助。原始答案中添加了代码片段。我希望这有帮助!非常感谢。添加target_link_库(实验${catkin_库})(第3项)对我有帮助。
...
###################################
## catkin specific configuration ##
###################################
...
catkin_package(
INCLUDE_DIRS include
LIBRARIES envlib
# CATKIN_DEPENDS roscpp rospy std_msgs
CATKIN_DEPENDS message_runtime
# DEPENDS system_lib
)
...
...
## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
rl_common
rl_env
rl_agent
)
## System dependencies are found with CMake's conventions
# find_package(Boost REQUIRED COMPONENTS system)
...
## Declare a cpp executable
# add_executable(rgbd_tools_node src/rgbd_tools_node.cpp)
add_executable(experiment src/rl.cc)
# target_link_libraries(experiment agentlib envlib ${catkin_LIBRARIES})
target_link_libraries(experiment ${catkin_LIBRARIES})
#add_executable(image_converter src/image_converter.cpp)
...