紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
livox_ROS2_driver 安装编译中报错
-
Ubuntu22.04
ROS2Humble在安装livox雷达ROS2功能包时,编译报错:
在使用 2 时仍然报错:
** WARNING ** io features related to pcap will be disabled /usr/bin/ld: /usr/local/lib/liblivox_sdk_static.a(device_discovery.cpp.o): relocation R_X86_64_TPOFF32 against symbol `_ZGVZN6spdlog7details2os9thread_idEvE3tid' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: failed to set dynamic section sizes: bad value collect2: error: ld returned 1 exit status gmake[2]: *** [CMakeFiles/livox_ros2_driver.dir/build.make:508:liblivox_ros2_driver.so] 错误 1 gmake[1]: *** [CMakeFiles/Makefile2:139:CMakeFiles/livox_ros2_driver.dir/all] 错误 2 gmake: *** [Makefile:146:all] 错误 2 --- Failed <<< livox_ros2_driver [13.0s, exited with code 2] Summary: 2 packages finished [17.6s] 1 package failed: livox_ros2_driver 1 package had stderr output: livox_ros2_driver
-
@andrew_liumuran 这个错误看和gcc有关系,你可能要按照提示,重新编译库:
@andrew_liumuran 在 livox_ROS2_driver 安装编译中报错 中说:
recompile with -fPIC
并传递 -fPIC参数,该参数含义如下
-fPIC 是 GCC 和 Clang 编译器的选项之一,表示编译生成的目标文件使用位置独立代码(Position Independent Code,PIC)格式。使用该选项可以使得生成的目标文件在被动态链接时更加灵活,也能够提高程序的安全性。
PIC 格式的目标文件可以在内存中的任何位置加载和执行,而不必依赖于特定的地址。这意味着在将多个目标文件链接为一个可执行文件时,不必为每个目标文件指定特定的内存地址,也可以避免因为目标文件地址重叠而导致的链接错误。此外,使用 PIC 也可以提高程序的安全性,因为它使得攻击者更难利用内存布局信息来实现攻击。
在使用 GCC 或 Clang 编译器时,如果需要生成使用 PIC 格式的目标文件,就需要加上 -fPIC 选项。通常在编译共享库(shared library)时需要使用该选项。在 Linux 系统中,使用 ldd 命令可以查看一个可执行文件或共享库所依赖的动态链接库,如果一个库使用了 -fPIC 选项编译,则会在输出中显示 PIC 字样。