在Linux中编译C++程序时链接PCL库



我是点云库的新手。有一件事困扰了我一段时间。

因此,在我的系统上,每当我必须编译一个C++程序,它需要链接OpenCV库时,我都会使用以下终端命令:

g++ -std=c++11 fileName.cpp -o executableFile `pkg-config --cflags --libs opencv`

现在,事情已经发展到我必须使用PCL的地步。但是,在任何地方(包括PCL的官方网站(,人们都使用CMake文件链接PCL库,而我对CMake并不熟悉。

有没有一种方法可以在不写CMake文件的情况下包含PCL库,只在终端命令中包含更多的标志/参数?

我使用的是Ubuntu 18.04。

我做了一段时间的实验,下面是我是如何解决这个问题的。

man pkg-config告诉pkg-config查找.pc文件的文件夹。因此,我检查了这些文件夹,以获取我希望pkg配置与.cpp文件链接的确切的.pc文件名。我在/usr/local\lib\pkgconfig 中找到了所需的文件(pcl_io-1.11.pc(

接下来,我将终端命令修改为以下内容(请将两个后引号视为下面的单个后引号(

g++ -std=c++14 pcd_write.cpp -o pcd_write ``pkg-config --cflags --libs pcl_io-1.11`` -lboost_system

注意:不包括-lboost_system会导致另一条错误消息。我觉得这很有帮助。

此编译成功。但是,在运行可执行文件时,我会收到以下错误消息:

./pcd_write:error while loading shared libraries:libpcl_io.so.1.11:cannot open shared object file:No such file or directory

在这里找到了这个问题的解决方案

sudo /sbin/ldconfig -v

然后,运行可执行文件得到了预期的结果。

最新更新