软件包的库文件和头文件安装在哪里?

8
在Ubuntu下载和安装软件包后,我该如何检查库文件和头文件被写入到哪里?我相信这与软件包的.pc文件有关,但是我也不知道如何找到那个文件。
例如,我已经下载了PCL(点云库)软件包,并在一个示例CMakeLists.txt文件中得到了以下内容:
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})

这些环境变量定义在哪里,如何查看它们呢?

如果我从源代码编译库而不是通过软件包安装,会有任何不同吗?会自动创建 .pc 文件吗?


echo $PCL_INCLUDE_DIRS - Alex F
那只是返回一个空行。然而,像上面那样编译我的项目就可以正常工作,所以它一定在使用PCL库。它还在其他地方搜索吗? - Karnivaurus
2
如果您安装了Debian软件包,可以通过dpkg -L <软件包名称>查看其内容。如果您从源代码安装,则取决于源代码本身,并且需要熟悉其使用的构建系统。 - TeTeT
@Karnivaurus,你能帮我检查一下我的答案是否正确吗? - Ortomala Lokni
我也曾有过类似的困惑。您可以通过在 CMakeLists.txt 中使用 message 命令来检查 ${PCL_INCLUDE_DIRS} 解析为哪些值,例如添加以下行:message("${PCL_INCLUDE_DIRS})message("PCL_INCLUDE_DIRS = " ${PCL_INCLUDE_DIRS})。当您运行 cmake .. 时,它将显示结果。对于其他宏/变量,${PCL_LIBRARY_DIRS}${PCL_DEFINITIONS},也可以采用相同的方法进行检查。 - Milan
2个回答

8
如果您安装包含libpcl开发文件的软件包
sudo apt-get install libpcl-dev

您可以列出安装的文件

dpkg -L libpcl-dev

可以看到所有标题的位置。
...
/usr/include/pcl-1.7/pcl/filters/fast_bilateral.h
/usr/include/pcl-1.7/pcl/filters/voxel_grid_covariance.h
/usr/include/pcl-1.7/pcl/filters/voxel_grid_occlusion_estimation.h
/usr/include/pcl-1.7/pcl/filters/median_filter.h
/usr/include/pcl-1.7/pcl/filters/crop_box.h
/usr/include/pcl-1.7/pcl/filters/voxel_grid_label.h
/usr/include/pcl-1.7/pcl/filters/covariance_sampling.h
/usr/include/pcl-1.7/pcl/filters/random_sample.h
/usr/include/pcl-1.7/pcl/filters/normal_refinement.h
/usr/include/pcl-1.7/pcl/filters/project_inliers.h
/usr/include/pcl-1.7/pcl/filters/fast_bilateral_omp.h
/usr/include/pcl-1.7/pcl/filters/clipper3D.h
/usr/include/pcl-1.7/pcl/filters/convolution.h
/usr/include/pcl-1.7/pcl/filters/passthrough.h
/usr/include/pcl-1.7/pcl/filters/conditional_removal.h
/usr/include/pcl-1.7/pcl/filters/impl
/usr/include/pcl-1.7/pcl/filters/impl/frustum_culling.hpp
/usr/include/pcl-1.7/pcl/filters/impl/conditional_removal.hpp
/usr/include/pcl-1.7/pcl/filters/impl/convolution_3d.hpp
/usr/include/pcl-1.7/pcl/filters/impl/voxel_grid_covariance.hpp
/usr/include/pcl-1.7/pcl/filters/impl/fast_bilateral_omp.hpp
/usr/include/pcl-1.7/pcl/filters/impl/project_inliers.hpp
/usr/include/pcl-1.7/pcl/filters/impl/morphological_filter.hpp
/usr/include/pcl-1.7/pcl/filters/impl/crop_box.hpp
/usr/include/pcl-1.7/pcl/filters/impl/covariance_sampling.hpp
/usr/include/pcl-1.7/pcl/filters/impl/local_maximum.hpp
/usr/include/pcl-1.7/pcl/filters/impl/plane_clipper3D.hpp
/usr/include/pcl-1.7/pcl/filters/impl/bilateral.hpp
/usr/include/pcl-1.7/pcl/filters/impl/voxel_grid_occlusion_estimation.hpp
....

非常感谢您分享如此有用的命令。在我的Ubuntu 18.04上输入该命令,我得到了一个非常长的列表。因此,为了更好地理解,/usr/include/pcl-1.8/pcl/包含PCL头文件/usr/lib/x86_64-linux-gnu/包含PCL库(所有.so文件),对吗?但其他目录呢:/usr/share/doc/libpcl-dev/usr/share/doc/libpcl-dev//usr/lib/x86_64-linux-gnu/pkgconfig。我的意思是它们确切的名称是什么?我还试图理解PCL项目的CMakeLists.txt,所以您的答案将对我理解得更好有很大帮助! - Milan

2
默认情况下,库会被安装在 /usr/lib 目录下,头文件会在 /usr/include 目录下。
通常库文件的扩展名为 .so,相应的头文件则为 .h。
查找已安装的库的图形界面方法是打开软件中心->开发工具->库。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接