./lib/libpcl_kdtree.so.1.7.2:对‘LZ4_resetStreamHC’未定义的引用

本文记录了解决在安装PCL过程中遇到的与LZ4相关的链接错误的过程,通过在Makefile中添加-l lz4选项,并将MAKE变量设置为包含-l lz4,最终解决了编译错误,尽管这导致了编译速度变慢。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

./lib/libpcl_kdtree.so.1.7.2:对‘LZ4_resetStreamHC’未定义的引用
../lib/libpcl_kdtree.so.1.7.2:对‘LZ4_setStreamDecode’未定义的引用
../lib/libpcl_kdtree.so.1.7.2:对‘LZ4_decompress_safe’未定义的引用
../lib/libpcl_kdtree.so.1.7.2:对‘LZ4_decompress_safe_continue’未定义的引用
../lib/libpcl_kdtree.so.1.7.2:对‘LZ4_compress_HC_continue’未定义的引用

 

最近在安装PCL,但是一致报这个错,首先检查lz4的头文件,发现是有这些定义的,而且有动态链接so文件,但是就是这样,去kdtree代码处查看,没有这些函数只有flann,我们知道flann依赖lz4,但是怎么会报这个错,不管了,先去Makefile添加-llz4的选项,加了一个还挺管用,但是麻烦不断,下一个编译也是这个错误,没办法,咋也不知道哪个函数依赖这个,所以直接把Makefile的MAKE给换了,MAKE += -llz4,编译通过,,但是编译的速度哦真是慢死。管他娘的,成功再说。

 

ldconfig -p | grep pcl libpcl_visualization.so.1.10 (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_visualization.so.1.10 libpcl_visualization.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_visualization.so libpcl_tracking.so.1.10 (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_tracking.so.1.10 libpcl_tracking.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_tracking.so libpcl_surface.so.1.10 (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_surface.so.1.10 libpcl_surface.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_surface.so libpcl_stereo.so.1.10 (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_stereo.so.1.10 libpcl_stereo.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_stereo.so libpcl_segmentation.so.1.10 (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_segmentation.so.1.10 libpcl_segmentation.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_segmentation.so libpcl_search.so.1.10 (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_search.so.1.10 libpcl_search.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_search.so libpcl_sample_consensus.so.1.10 (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_sample_consensus.so.1.10 libpcl_sample_consensus.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_sample_consensus.so libpcl_registration.so.1.10 (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_registration.so.1.10 libpcl_registration.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_registration.so libpcl_recognition.so.1.10 (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_recognition.so.1.10 libpcl_recognition.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_recognition.so libpcl_people.so.1.10 (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_people.so.1.10 libpcl_people.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_people.so libpcl_outofcore.so.1.10 (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_outofcore.so.1.10 libpcl_outofcore.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_outofcore.so libpcl_octree.so.1.10 (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_octree.so.1.10 libpcl_octree.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_octree.so libpcl_ml.so.1.10 (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_ml.so.1.10 libpcl_ml.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_ml.so libpcl_keypoints.so.1.10 (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_keypoints.so.1.10 libpcl_keypoints.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_keypoints.so libpcl_kdtree.so.1.10 (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_kdtree.so.1.10 libpcl_kdtree.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_kdtree.so libpcl_io_ply.so.1.10 (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_io_ply.so.1.10 libpcl_io_ply.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_io_ply.so libpcl_io.so.1.10 (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_io.so.1.10 libpcl_io.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_io.so libpcl_filters.so.1.10 (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_filters.so.1.10 libpcl_filters.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_filters.so libpcl_features.so.1.10 (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_features.so.1.10 libpcl_features.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_features.so libpcl_common.so.1.10 (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_common.so.1.10 libpcl_common.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_common.so libpcl_apps.so.1.10 (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_apps.so.1.10 libpcl_apps.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcl_apps.so libdapclient.so.6 (libc6,x86-64) => /lib/x86_64-linux-gnu/libdapclient.so.6 libdapclient.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libdapclient.so (base) kxl@kxl-MS-7D46:~$ ldconfig -p | grep boost libboost_wserialization.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_wserialization.so.1.71.0 libboost_wserialization.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_wserialization.so libboost_wave.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_wave.so.1.71.0 libboost_wave.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_wave.so libboost_unit_test_framework.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_unit_test_framework.so.1.71.0 libboost_unit_test_framework.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_unit_test_framework.so libboost_type_erasure.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_type_erasure.so.1.71.0 libboost_type_erasure.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_type_erasure.so libboost_timer.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_timer.so.1.71.0 libboost_timer.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_timer.so libboost_thread.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_thread.so.1.71.0 libboost_thread.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_thread.so libboost_system.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_system.so.1.71.0 libboost_system.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_system.so libboost_stacktrace_noop.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_stacktrace_noop.so.1.71.0 libboost_stacktrace_noop.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_stacktrace_noop.so libboost_stacktrace_basic.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_stacktrace_basic.so.1.71.0 libboost_stacktrace_basic.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_stacktrace_basic.so libboost_stacktrace_backtrace.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_stacktrace_backtrace.so.1.71.0 libboost_stacktrace_backtrace.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_stacktrace_backtrace.so libboost_stacktrace_addr2line.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_stacktrace_addr2line.so.1.71.0 libboost_stacktrace_addr2line.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_stacktrace_addr2line.so libboost_serialization.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_serialization.so.1.71.0 libboost_serialization.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_serialization.so libboost_regex.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_regex.so.1.71.0 libboost_regex.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_regex.so libboost_random.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_random.so.1.71.0 libboost_random.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_random.so libboost_python38.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_python38.so.1.71.0 libboost_python38.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_python38.so libboost_program_options.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_program_options.so.1.71.0 libboost_program_options.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_program_options.so libboost_prg_exec_monitor.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_prg_exec_monitor.so.1.71.0 libboost_prg_exec_monitor.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_prg_exec_monitor.so libboost_numpy38.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_numpy38.so.1.71.0 libboost_numpy38.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_numpy38.so libboost_mpi_python38.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_mpi_python38.so.1.71.0 libboost_mpi_python38.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_mpi_python38.so libboost_mpi.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_mpi.so.1.71.0 libboost_mpi.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_mpi.so libboost_math_tr1l.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_math_tr1l.so.1.71.0 libboost_math_tr1l.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_math_tr1l.so libboost_math_tr1f.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_math_tr1f.so.1.71.0 libboost_math_tr1f.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_math_tr1f.so libboost_math_tr1.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_math_tr1.so.1.71.0 libboost_math_tr1.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_math_tr1.so libboost_math_c99l.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_math_c99l.so.1.71.0 libboost_math_c99l.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_math_c99l.so libboost_math_c99f.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_math_c99f.so.1.71.0 libboost_math_c99f.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_math_c99f.so libboost_math_c99.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_math_c99.so.1.71.0 libboost_math_c99.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_math_c99.so libboost_log_setup.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_log_setup.so.1.71.0 libboost_log_setup.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_log_setup.so libboost_log.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_log.so.1.71.0 libboost_log.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_log.so libboost_locale.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_locale.so.1.71.0 libboost_locale.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_locale.so libboost_iostreams.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_iostreams.so.1.71.0 libboost_iostreams.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_iostreams.so libboost_graph_parallel.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_graph_parallel.so.1.71.0 libboost_graph_parallel.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_graph_parallel.so libboost_graph.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_graph.so.1.71.0 libboost_graph.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_graph.so libboost_filesystem.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 libboost_filesystem.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_filesystem.so libboost_fiber.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_fiber.so.1.71.0 libboost_fiber.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_fiber.so libboost_date_time.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_date_time.so.1.71.0 libboost_date_time.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_date_time.so libboost_coroutine.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_coroutine.so.1.71.0 libboost_coroutine.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_coroutine.so libboost_context.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_context.so.1.71.0 libboost_context.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_context.so libboost_container.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_container.so.1.71.0 libboost_container.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_container.so libboost_chrono.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_chrono.so.1.71.0 libboost_chrono.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_chrono.so libboost_atomic.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_atomic.so.1.71.0 libboost_atomic.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_atomic.so
最新发布
07-06
<think>我们正在Linux系统中检查已安装的PCL和Boost库的信息。用户的需求是查看系统中已安装的PCL和Boost库的版本和安装路径,可能用于开发或调试目的。以下步骤将帮助用户获取这些信息。 ### 检查PCL库的安装信息 #### 1. 使用`pkg-config`查询(推荐) PCL库通常提供了pkg-config的配置文件(`.pc`文件),我们可以通过以下命令查询: ```bash pkg-config --modversion pcl_common ``` 如果成功,将输出已安装的PCL版本。如果上述命令失败(可能是因为模块名不匹配),可以尝试查询所有PCL模块: ```bash pkg-config --list-all | grep pcl ``` 然后选择一个模块(如`pcl_common`)查询版本。 #### 2. 检查头文件版本 PCL库的头文件中通常包含版本信息。我们可以查看`pcl/common/common.h`头文件: ```bash # 查找头文件位置 locate pcl/common/common.h # 查看版本信息(如果找到) grep -A 1 "PCL_VERSION_COMPARE" /usr/include/pcl-*/pcl/common/common.h ``` 或者使用: ```bash cat /usr/include/pcl-<version>/pcl/pcl_config.h | grep PCL_VERSION ``` 需要将`<version>`替换为实际版本号(如1.10, 1.12等)。 #### 3. 检查库文件 通过库文件的命名通常可以推断版本: ```bash # 查找所有与pcl相关的库文件 ls /usr/lib/x86_64-linux-gnu/libpcl_* # 或者 ls /usr/local/lib/libpcl_* ``` 注意文件名中的版本号。 ### 检查Boost库的安装信息 #### 1. 使用`dpkg`查询(适用于通过apt安装的Boost) ```bash dpkg -s libboost-dev | grep Version ``` 如果系统安装了多个Boost组件,可以查询所有: ```bash dpkg -l | grep libboost ``` #### 2. 检查头文件和库路径 Boost库的头文件和库文件通常安装在标准路径: ```bash # 查看头文件路径(通常包含版本号) ls /usr/include/boost # 查看库文件路径 ls /usr/lib/x86_64-linux-gnu/libboost* ``` #### 3. 使用Boost自带的版本信息 Boost库提供了一个获取版本号的函数,我们可以编写一个简单程序来检测: ```cpp #include <boost/version.hpp> #include <iostream> int main() { std::cout << "Boost version: " << BOOST_LIB_VERSION << std::endl; return 0; } ``` 编译并运行: ```bash g++ -o boost_version boost_version.cpp && ./boost_version ``` #### 4. 检查环境变量 有时Boost可能安装在自定义路径,可以通过环境变量查看: ```bash echo $BOOST_ROOT echo $BOOST_INCLUDEDIR echo $BOOST_LIBRARYDIR ``` ### 总结步骤 1. **PCL版本检查**: - 优先使用`pkg-config --modversion pcl_common` - 其次检查头文件或库文件路径中的版本号 2. **Boost版本检查**: - 优先使用`dpkg`(如果通过apt安装) - 其次通过头文件路径或编写测试程序 > **注意**:如果系统中存在多个版本的PCL或Boost,可能需要通过`ldconfig`或`LD_LIBRARY_PATH`环境变量来确认当前生效的版本。 §§相关问题§§ 1. 如何解决系统中多个PCL版本冲突的问题? 2. 如何指定CMake使用特定版本的Boost库? 3. 如何通过CMakeLists.txt正确查找PCL库?</think>### 如何检查系统中已安装的PCL和Boost库信息 #### 一、检查PCL库安装信息 1. **查询安装版本** ```bash dpkg -l | grep pcl ``` - 输出示例:`ii libpcl-dev 1.10.0-7build1` 显示PCL版本为1.10.0[^3] 2. **查看头文件位置** ```bash locate pcl/common/common.h ``` - 路径示例:`/usr/include/pcl-1.10/pcl/common/common.h` 包含版本号 3. **检查库文件路径** ```bash ldconfig -p | grep libpcl ``` - 输出示例: ``` libpcl_common.so.1.10 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libpcl_common.so.1.10 ``` #### 二、检查Boost库安装信息 1. **查询安装版本** ```bash dpkg -l | grep libboost ``` - 输出示例:`ii libboost-dev 1.71.0.0ubuntu2` 显示Boost版本为1.71.0 2. **查看头文件位置** ```bash locate boost/version.hpp ``` - 打开文件查看宏定义: ```cpp #define BOOST_VERSION 107100 // 107100 = 1.71.0 ``` 3. **检查库文件路径** ```bash ldconfig -p | grep boost ``` - 输出示例: ``` libboost_system.so.1.71.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_system.so.1.71.0 ``` #### 三、验证环境变量配置 检查`~/.bashrc`或`~/.profile`中的路径设置: ```bash grep -E "PCL|Boost|LD_LIBRARY" ~/.bashrc ``` - 应有类似配置: ```bash export PCL_ROOT=/usr export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu ``` #### 四、版本兼容性检查公式 当同时使用PCL和Boost时,需满足: $$ \text{PCL}_\text{req} \subseteq \text{Boost}_\text{installed} $$ 其中: - $\text{PCL}_\text{req}$ = PCL要求的Boost版本 - $\text{Boost}_\text{installed}$ = 实际安装的Boost版本 > **提示**:PCL 1.10通常需要Boost ≥1.65[^2],若版本不匹配会导致段错误 #### 五、完整环境检查脚本 ```bash #!/bin/bash echo "=== PCL检查 ===" pkg-config --modversion pcl_common 2>/dev/null || echo "PCL未安装" echo "头文件路径: $(locate pcl/common/common.h | head -1)" echo -e "\n=== Boost检查 ===" cat /usr/include/boost/version.hpp 2>/dev/null | grep "BOOST_LIB_VERSION" echo "库文件路径: $(ldconfig -p | grep boost_system | awk '{print $4}')" ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值