【问题标题】:Link PCL libraries while compiling C++ programs in Linux在 Linux 中编译 C++ 程序时链接 PCL 库
【发布时间】:2020-07-23 22:18:24
【问题描述】:

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

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

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

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

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

我使用的是 Ubuntu 18.04。

【问题讨论】:

  • 对我来说,未来的证明选项似乎只是学习CMake...
  • 可能是的。此外,如果您将该命令放入 shell 脚本中,您将不必记住该命令。当您添加越来越多的库并且命令变得更长时,这很有用。
  • 感谢您的快速回复。但是,我对这件事完全陌生。例如,如果我们考虑 PCL 官方网站上的example,如果不说明任何编译参数,例如 g++ -std=c++11,我无法理解 pcd_write.cpp 是如何编译的。如果你们能帮助我,我将不胜感激。
  • 你必须找到他们的名字,然后做'-l'。该名称很可能是 libPCLcommon。您可以尝试使用 find /usr/lib -name "PCL.so*" 找到它们。您是否尝试将 pkg-config 与 PCL 一起使用?也可以存在,试试 pkg-config --list-all
  • 谢谢@ErwanDaniel。你帮我解决了我遇到的一个问题。

标签: c++ ubuntu-18.04 point-cloud-library


【解决方案1】:

我尝试了一段时间,这是我的想法。

man pkg-config 告诉您 pkg-config 查找 .pc 文件的文件夹。因此,我检查了这些文件夹中我希望 pkg-config 与我的 .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 会导致另一个错误消息。我发现this 很有帮助。

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

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

这个问题的解决办法找到了here

sudo /sbin/ldconfig -v

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多