ros阿克曼小车,鲁班猫板子3566的错误 SDL

catkin_make -DCATKIN_WHITELIST_PACKAGES="world_canvas_msgs"

sudo chmod -R 777 src/

error:

/usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/9/../../../aarch64-linux-gnu/libSDL_image.so: undefined reference to `SDL_ReadLE16'

/usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/9/../../../aarch64-linux-gnu/libSDL_image.so: undefined reference to `SDL_FillRect'

/usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/9/../../../aarch64-linux-gnu/libSDL_image.so: undefined reference to `SDL_ReadBE32'

/usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/9/../../../aarch64-linux-gnu/libSDL_image.so: undefined reference to `SDL_SetColorKey'

/usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/9/../../../aarch64-linux-gnu/libSDL_image.so: undefined reference to `SDL_ClearError'

/usr/bin/ld: /home/cat/hl/wheeltec_robot/devel/lib/libmap_server_image_loader.so: undefined reference to `SDL_FreeSurface'

/usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/9/../../../aarch64-linux-gnu/libSDL_image.so: undefined reference to `SDL_MapRGB'

/usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/9/../../../aarch64-linux-gnu/libSDL_image.so: undefined reference to `SDL_RWFromFile'

/usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/9/../../../aarch64-linux-gnu/libSDL_image.so: undefined reference to `SDL_SetError'

/usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/9/../../../aarch64-linux-gnu/libSDL_image.so: undefined reference to `SDL_UpperBlit'

/usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/9/../../../aarch64-linux-gnu/libSDL_image.so: undefined reference to `SDL_ReadLE32'

/usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/9/../../../aarch64-linux-gnu/libSDL_image.so: undefined reference to `SDL_CreateRGBSurface'

/usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/9/../../../aarch64-linux-gnu/libSDL_image.so: undefined reference to `SDL_Error'

/usr/bin/ld: /home/cat/hl/wheeltec_robot/devel/lib/libmap_server_image_loader.so: undefined reference to `SDL_GetError'

collect2: error: ld returned 1 exit status

make[2]: *** [navigation-noetic-devel/map_server/CMakeFiles/map_server.dir/build.make:128:/home/cat/hl/wheeltec_robot/devel/lib/map_server/map_server] 错误 1

make[1]: *** [CMakeFiles/Makefile2:922:navigation-noetic-devel/map_server/CMakeFiles/map_server.dir/all] 错误 2

make: *** [Makefile:141:all] 错误 2

Invoking "make -j4 -l4" failed

ERROR: cannot launch node of type [map_server/map_server]: Cannot locate node of type [map_server] in package [map_server]. Make sure file exists in package path and permission is set to executable (chmod +x)

我是从客服那拿到一个新map_server来重新编译

这个错误表明在CMake测试阶段,编译器无法找到pthread库。要解决这个问题,你可以尝试以下步骤:

查找正确的pthread库:首先确保你的系统中已经安装了pthread库。通常情况下,pthread库是Linux系统的一部分,但在某些情况下可能需要单独安装。你可以通过包管理器来安装,例如对于Debian/Ubuntu系统,你可以运行以下命令:

sudo apt-get install libpthread-stubs0-dev

对于其他Linux发行版,你需要查找相应的包名并使用适当的包管理器进行安装。

设置正确的链接库:错误信息中提到找不到"-lpthreads",这表明CMake正在尝试链接pthread库时使用了错误的名称。pthread库的名称可能因系统而异,通常应该是"-lpthread"而不是"-lpthreads"。你可以在CMakeLists.txt文件中显式指定链接pthread库:

cmake

find_package(Threads REQUIRED)

target_link_libraries(your_target_name Threads::Threads)

将"your_target_name"替换为你的目标名称。

重新运行CMake:在进行上述更改后,重新运行CMake来重新生成Makefile,并确保编译器能够找到pthread库。

通过执行以上步骤,你应该能够解决CMake测试阶段中关于pthread的链接错误。

要查找SDL2和SDL2_image的安装路径,你可以执行以下步骤:

使用pkg-config:SDL2和SDL2_image通常提供了pkg-config文件,可以用来查询它们的安装路径。你可以使用以下命令来查找:

bash

pkg-config --cflags --libs sdl2 sdl2_image

这将输出SDL2和SDL2_image的编译标志和链接标志,其中包含了包含文件的路径和库的路径。

使用locate命令:如果你的系统上安装了SDL2和SDL2_image,并且updatedb数据库已经更新,你可以使用locate命令来搜索相关文件的路径。例如:

bash

locate SDL2

locate SDL2_image

这将列出与SDL2和SDL2_image相关的文件及其路径,包括头文件、库文件等。

查看默认安装路径:通常情况下,SDL2和SDL2_image会被安装在系统的默认路径下,例如在Linux上可能是/usr/include和/usr/lib。你可以直接查看这些目录来确认是否存在SDL2和SDL2_image的相关文件。

通过执行这些步骤,你应该能够找到SDL2和SDL2_image的安装路径。

cat@lubancat:~/hl/wheeltec_robot$ pkg-config --cflags --libs sdl2

-D_REENTRANT -I/usr/local/include -I/usr/local/include/SDL2 -L/usr/local/lib -Wl,-rpath,/usr/local/lib -Wl,--enable-new-dtags -lSDL2

cat@lubancat:~/hl/wheeltec_robot$ pkg-config --cflags --libs sdl2_image

Package sdl2_image was not found in the pkg-config search path.

Perhaps you should add the directory containing `sdl2_image.pc'

to the PKG_CONFIG_PATH environment variable

No package 'sdl2_image' found

/usr/bin/mkdir -p /usr/local/lib/cmake/SDL2_image

/usr/bin/install -c -m 644 sdl2_image-config.cmake /usr/local/lib/cmake/SDL2_image

/usr/bin/install -c -m 644 sdl2_image-config-version.cmake /usr/local/lib/cmake/SDL2_image

/usr/bin/mkdir -p '/usr/local/include/SDL2'

/usr/bin/install -c -m 644 include/SDL_image.h '/usr/local/include/SDL2'

/usr/bin/mkdir -p '/usr/local/lib/pkgconfig'

/usr/bin/install -c -m 644 SDL2_image.pc '/usr/local/lib/pkgconfig'

make[2]: 离开目录"/home/cat/下载/SDL2_image-2.8.2"

make[1]: 离开目录"/home/cat/下载/SDL2_image-2.8.2"

根据你提供的输出,SDL2_image已经成功安装,并且相关的文件已经被复制到了系统目录中。然而,根据你之前的问题描述,pkg-config仍然无法找到SDL2_image。

请尝试执行以下操作:

确保在执行pkg-config --cflags --libs sdl2_image命令之前,已经执行了设置PKG_CONFIG_PATH的命令。如果没有,请执行以下命令:

bash

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

然后再次运行pkg-config --cflags --libs sdl2_image命令,检查是否能够找到SDL2_image。

如果还是无法找到SDL2_image,请检查一下PKG_CONFIG_PATH变量是否设置正确,并确保SDL2_image的pkg-config文件位于/usr/local/lib/pkgconfig目录下。如果问题仍然存在,可能需要检查一下其他系统设置或者重新安装SDL2_image。

cat@lubancat:~/下载/SDL2_image-2.8.2$ pkg-config --cflags --libsdl2_image

Unknown option --libsdl2_image

看起来在你运行pkg-config --cflags --libsdl2_image时出现了错误,提示Unknown option --libsdl2_image。

这个错误表明pkg-config无法识别--libsdl2_image作为选项。这很可能是因为命令中的选项格式不正确。

请尝试将命令改为:

bash

pkg-config --cflags --libs SDL2_image

注意命令中SDL2_image之前没有--前缀,因为SDL2_image是包的名称,而不是选项。执行上述命令后,应该能够正确获取SDL2_image的编译标志和链接标志

cat@lubancat:~/下载/SDL2_image-2.8.2$ pkg-config --cflags --libs SDL2_image

-D_REENTRANT -I/usr/local/include/SDL2 -I/usr/local/include -I/usr/local/include/SDL2 -L/usr/local/lib -lSDL2_image -Wl,-rpath,/usr/local/lib -Wl,--enable-new-dtags -lSDL2

/usr/bin/ld: /home/cat/hl/wheeltec_robot/devel/lib/libmap_server_image_loader.so: undefined reference to `SDL_FreeSurface'

/usr/bin/ld: /home/cat/hl/wheeltec_robot/devel/lib/libmap_server_image_loader.so: undefined reference to `IMG_Load'

/usr/bin/ld: /home/cat/hl/wheeltec_robot/devel/lib/libmap_server_image_loader.so: undefined reference to `SDL_GetError'

collect2: error: ld returned 1 exit status

make[2]: *** [navigation-noetic-devel/map_server/CMakeFiles/map_server.dir/build.make:125:/home/cat/hl/wheeltec_robot/devel/lib/map_server/map_server] 错误 1

make[1]: *** [CMakeFiles/Makefile2:922:navigation-noetic-devel/map_server/CMakeFiles/map_server.dir/all] 错误 2

make: *** [Makefile:141:all] 错误 2

Invoking "make -j4 -l4" failed

这个错误表明编译时发生了链接错误,具体是由于在libmap_server_image_loader.so库中找不到SDL_FreeSurface、IMG_Load和SDL_GetError函数的定义。

这通常是由于未正确链接SDL2_image库导致的。请确保你已经正确地安装了SDL2_image库,并且在CMakeLists.txt文件中添加了正确的链接标志。

请检查以下几点:

确保你已经正确地安装了SDL2_image库。可以尝试使用pkg-config命令来确认SDL2_image库的安装路径和版本信息:

pkg-config --modversion SDL2_image

在CMakeLists.txt文件中,确保你使用了正确的链接标志来链接SDL2_image库。你可以在target_link_libraries()函数中添加${SDL2_IMAGE_LIBRARIES}变量,如下所示:

cmake

target_link_libraries(your_executable

${catkin_LIBRARIES}

${SDL2_IMAGE_LIBRARIES}

)

确保你在CMakeLists.txt文件中正确地设置了SDL2_image的包含路径。你可以在include_directories()函数中添加${SDL2_IMAGE_INCLUDE_DIRS}变量,如下所示:

cmake

include_directories(

${catkin_INCLUDE_DIRS}

${SDL2_IMAGE_INCLUDE_DIRS}

)

完成以上步骤后,重新构建你的项目,看看是否能够解决链接错误。如果问题仍然存在,请确保你的SDL2_image库完整且可用,并检查你的CMakeLists.txt文件中是否有其他可能导致链接错误的配置错误

你可以使用pkg-config命令来查看SDL2_image库的链接标志。

在终端中运行以下命令:

shell

pkg-config --libs SDL2_image

这将返回SDL2_image库的链接标志,例如-lSDL2_image和其他可能需要的系统库。

另外,你还可以使用pkg-config命令来查看SDL2_image库的包含路径,运行以下命令:

shell

pkg-config --cflags SDL2_image

这将返回SDL2_image库的包含路径,例如-I/usr/include/SDL2。

通过查看链接标志和包含路径,你就能够正确地配置你的CMakeLists.txt文件,以确保能够正确链接SDL2_image库。

相关推荐
深圳市青牛科技实业有限公司2 小时前
【青牛科技】应用方案|D2587A高压大电流DC-DC
人工智能·科技·单片机·嵌入式硬件·机器人·安防监控
道可云7 小时前
道可云人工智能&元宇宙每日资讯|2024国际虚拟现实创新大会将在青岛举办
大数据·人工智能·3d·机器人·ar·vr
微凉的衣柜8 小时前
Meta AI 推出机器人开源项目:推动触觉感知和人机交互的前沿研究
人工智能·机器人·人机交互
袁牛逼8 小时前
自动打电话机器人,好用吗?
机器人
资源补给站8 小时前
论文2—《基于柔顺控制的智能神经导航手术机器人系统设计》文献阅读分析报告
机器学习·机器人·手术机器人
袁牛逼8 小时前
ai外呼机器人的作用有哪些?
人工智能·机器人
云卓SKYDROID12 小时前
除草机器人算法以及技术详解!
算法·机器人·科普·高科技·云卓科技·算法技术
袁牛逼1 天前
电话语音机器人,是由哪些功能构成?
人工智能·自然语言处理·机器人·语音识别
TsingtaoAI1 天前
2024.10|AI/大模型在机器人/自动驾驶/智能驾舱领域的最新应用和深度洞察
机器人·自动驾驶·ai大模型·具身智能·智能驾舱
不是AI1 天前
【持续更新】【NLP项目】【自然语言处理】智能聊天机器人——“有问必答”【Chatbot】第2章、《模式一:问候模式》
人工智能·自然语言处理·机器人