【问题标题】:How do I install a built C++ library to /usr/include?如何将构建的 C++ 库安装到 /usr/include?
【发布时间】:2020-05-02 12:33:02
【问题描述】:

目标

我想在 Ubuntu 16.04 上安装最新的 C++ Pointcloud 库:PCL 1.8 版,并以我可以将其导入 C++ 代码的方式进行安装,例如:

#include <pcl/filters>

进展

我已按照教程进行操作:https://gist.github.com/IgniparousTempest/ce5fadbe742526d10d6bdbf15c3a3fe7#file-ubuntu_16-06_pcl_1-8-0_install-sh

命令运行成功,库(.cpp 和 .h 文件)当前位于:~/Documents/pcl

接下来我该怎么做?

我现在需要用这个库做什么?

我对安装像 Linux 这样的 C++ 库相当陌生,尤其是使用 cmake 和 make 命令。

我之前使用终端命令sudo apt-get install libpcl-all 安装了pcl 1.7。这将头文件放在/usr/include/pcl-1.7/ 中。对应的 .cpp 文件去哪了?我无法使用 bash 命令找到它们 $ locate generic_pcl_filename.cpp

我也想知道是否应该将 pcl 1.8 文件夹放在 /usr/include 目录中,但这似乎是错误的,因为该文件夹还包含 .cpp 文件。

我们将不胜感激任何有关这方面的建议和信息。

【问题讨论】:

  • 不要使用这种脚本来安装库。如果脚本中间出现问题,您将难以调查原因。只需正常编译此库并将其安装在默认路径中(在 linux 系统中为/usr/local,是的,您将能够包含来自该位置的标头)。如果你不知道,cmake 项目的标准程序是:mkdir buildcd buildcmake ..makesudo make install
  • cpp 文件未安装。所以通常会安装文件或可执行文件。
  • 脚本中的最后一个命令 - sudo make install - 安装 PCL。您可以重复此命令,它将打印已安装的确切(目标)文件。为了能够通过#include &lt;pcl/filters&gt; 包含标题,您需要适当地设置include 目录。 “接下来我应该做什么?”,“我现在需要用这个图书馆做什么?” - 这么模糊的问题。
  • @pptaszni 谢谢。运行这些命令时我将库放在哪里有关系吗?有没有办法指定我想要安装库的位置,即 /usr/ 或 /usr/local?

标签: c++ build cmake shared-libraries point-cloud-library


【解决方案1】:

如何将构建的 C++ 库安装到 /usr/include?​​p>

通常,通过使用包管理器。包管理器所做的只是复制该目录下的头文件。除此之外,它还跟踪哪些文件属于哪个已安装的包。

如果你想在包管理器的上下文之外安装一个库,那么你应该使用 /usr/local/include 代替,因为 /usr/include 通常保留给包管理器。可以使用cp 完成复制,尽管库通常带有一个了解系统约定的构建系统,并且安装可以像make install 一样简单。该库应记录应如何安装。

我之前安装...使用终端命令 sudo apt-get install ...这将头文件放在 /usr/include/pcl-1.7/ 中。对应的.cpp文件去哪了?

创建 apt 包的维护者编译了 cpp 文件。该包不包含源代码,而是包含已编译的库(无论是归档对象文件的形式,还是可动态加载的共享库)。

【讨论】:

    猜你喜欢
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    相关资源
    最近更新 更多