Ubuntu下PCL编译成功但无法生成people_pcd_prob.cpp二进制文件求助
你已经把PCL的基础配置都捋顺了——依赖装完、Makefile生成正常、CUDA相关参数也都开了,但就是缺了目标二进制文件,我来帮你一步步排查问题:
1. 先确认BUILD_examples开关是否开启
people_pcd_prob属于PCL的people模块示例程序,默认情况下PCL的示例编译开关BUILD_examples大概率是关闭的。你需要在cmake配置时额外加上这个参数:
-DBUILD_examples=ON
重新运行cmake和make,这是最常见的原因——很多人只记得开模块编译,却忘了开示例编译的开关。
2. 检查示例目录的CMake配置
进入PCL源码的people/examples目录,先确认people_pcd_prob.cpp确实存在,然后查看该目录下的CMakeLists.txt,看有没有把这个文件加入编译目标。正常情况下应该有类似这样的代码:
add_executable(people_pcd_prob people_pcd_prob.cpp) target_link_libraries(people_pcd_prob pcl_people pcl_common pcl_io pcl_visualization)
如果没有这段配置,你可以手动添加上,然后重新执行cmake和make。
3. 查看编译日志的细节
重新编译时,留意终端输出,搜索people_pcd_prob相关的日志:
- 如果看到
Skipping target: people_pcd_prob,说明有条件编译的限制没满足 - 如果能看到编译该文件的日志但没生成二进制,可能是链接阶段有隐性问题(比如依赖库没匹配上但没触发显性报错)
你也可以尝试单独编译这个示例,获取更详细的信息:
cd <你的PCL编译目录>/people/examples make people_pcd_prob
4. 确认CUDA相关依赖的兼容性
虽然你开了BUILD_CUDA和BUILD_GPU,但要确保你的CUDA版本和PCL版本兼容——有些PCL版本对CUDA的最低版本有要求。另外,检查CUDA_ARCH_BIN是否设置正确(比如根据你的显卡算力设置,比如-DCUDA_ARCH_BIN=75对应RTX 20系显卡),算力不匹配可能会导致GPU相关示例被跳过编译。
5. 搜索编译后的输出路径
就算编译成功,二进制文件也可能不在你预期的位置。默认情况下,PCL的示例会生成在<编译目录>/bin或者<编译目录>/people/examples下,你可以用find命令快速定位:
find <你的PCL编译目录> -name "people_pcd_prob"
按照上面的步骤排查,应该能找到问题所在并生成你需要的二进制文件。
内容的提问来源于stack exchange,提问作者Gokul D

