当前位置: 首页 > 面试题库 >

我在哪里放置第三方库来建立C ++ Linux开发环境?

司徒高丽
2023-03-14
问题内容

尽管我是Linux的新手,但我对C
++并不陌生。我正在使用CMake来预编译带有某些第三方组件的跨平台游戏引擎,但是我对使用库存在很多疑问。我的问题是如何使用第三方库以及将它们放在哪里。Apt将libs安装在其官方位置(/
usr / local,/ usr / lib / ..),但是我在Windows中使用项目目录中文件夹中的本地libs进行开发。

另外,我需要一个很好的教程来了解库的工作规则。例如:当尝试编译我的项目时,luabind要求提供liblua.s0.1,但是AFAIK无法使用Lua提供的源生成该库(至少进行make,make
install)。

我知道,这个问题很模糊,但是我没有足够的经验来简化。

更新 :阅读一些答案后,下面是一个更简洁的问题。如果安装了所有第三方库,如何分发程序?如何在不使用大型自述文件的情况下管理依赖项?


问题答案:

在哪里放置图书馆

最好的解决办法是使用Linux发布版的包装系统(apt-getyum或类似)从发行版提供的软件包安装库尽可能。

如果发行版的打包库的版本不够新,或者您需要一些非标准的构建选项,或者您需要发行版不提供的库,那么您可以自己构建和安装它。您有两个主要的库放置位置:

  • /usr/local(库位于/usr/local/lib,标题位于/usr/local/include)。这将在系统范围内安装库,这可能是最简单的解决方案,因为您应该可以在不进行任何额外步骤的情况下针对它们进行构建。不要将库直接安装在之下/usr,因为这会干扰发行版的打包系统。
  • 在项目目录下,就像在Windows下一样。这样的优点是不需要root用户访问权限,也不需要进行系统范围的更改,但是您必须更新项目的包含路径和库路径,并且必须将所有共享库文件放在动态链接程序可以找到它们的某个位置(使用LD_LIBRARY_PATHld.so.conf-请参阅链接以获取更多详细信息)。

图书馆如何运作

请参阅David A. Wheeler出色的编程库HOWTO。我建议您阅读该文章,然后将任何特定问题发布为新主题。

如何分发程序

传统上,Unix /
Linux程序不包括其依赖项的副本。而是由最终用户或开发人员自行安装这些依赖项。正如您所说,这可能需要“大型自述文件”,但它有一些优点:

  • 可以通过发行版的程序包管理器来安装,管理和更新开发库,而不是每个源副本都有自己的要跟踪的库集。
  • 系统上任何给定库的副本只有一个,因此,例如,如果发现安全漏洞,则只有一个地方需要更新。(例如,请考虑一下当zlib(一种非常广泛使用的压缩库)被发现存在安全漏洞时所造成的混乱,因此,每个包含受影响版本的应用程序都需要进行更新。)
  • 如果您的程序足够流行(并且是开源的或至少免费提供的),则各种Linux发行版的软件包维护者可能希望对其进行打包并将其包含在发行版中。软件包维护者 确实 不喜欢捆绑的库。例如,请参阅Fedora关于该主题的页面。

如果您要将程序分发给最终用户,则可能需要考虑提供一个软件包(.dpkg.rpm),使他们可以简单地下载和安装而不用使用源代码。从最终用户的角度来看,理想情况下,应将软件包添加到发行版的存储库中(如果它是开源的,或者至少是免费提供的),以便用户可以使用其软件包管理器(apt- getyum)下载它。由于那里有大量的Linux发行版,这一切都可能变得复杂,但是与Debian / Ubuntu兼容.dpkg以及与Red
Hat / CentOS / Fedora兼容的Linux .rpm应该覆盖了很大一部分最终用户。构建软件包并不难,并且在线有很好的howto。



 类似资料:
  • 问题内容: 我决定不安装Windows,现在将Debian作为默认操作系统运行。我一直在Windows中编写代码,尤其是在Visual Studio中编写代码。我目前正试图习惯于在Linux下编译我的代码。 尽管我仍然有很多文档需要阅读,并且不要期望你们对我来说太容易了,但仍然可以从入门那里获得一些指导。我有一些特定的问题,但随时可以提出/建议有关此主题的其他任何内容。 关于创建make文件的推荐

  • 半绿拇指在这里。我希望下载一些Apache Commons和Google Guava库以在Eclipse中使用。多个 Q 理想情况下,我希望它位于所有Mac / * NIX系统通用的目录中。然而,这个Q 那么我应该把第三方Java库放在哪里呢?

  • 我正在尝试运行Phusion Passenger,这是我得到的最远的。当它在网站上加载时,它就出现了 需要“rails/all”。。。0.550s捆扎机。要求1.510s[已弃用]I18n。enforce\u available\u locales将来将默认为true。如果确实要跳过区域设置的验证,可以设置I18n。强制\u available\u locales=false以避免此消息。应用初始

  • 注意:如果重要的话,我不使用IDE,我的大部分编程都使用vim。

  • 依照以下操作,你可在Mac,Linux(Debia/Ubuntu)上搭建PPMessage开发环境。 下载PPMessage源代码 首先需要安装git,然后从github下载源代码,假设保存路径为~/Documents/ppmessage。 git clone git@github.com:PPMESSAGE/ppmessage.git 安装依赖软件 进入~/Documents/ppmessage

  • JSTL由三个jar包组成。这三个jar包是jstl.jar、standard.jar和xalan.jar。其中xalan.jar包用于为XML标签库增加处理XPath的能力,如果读者不使用XML标签库,则不需要xalan.jar包。 读者可以从所下的网址下载jstl.jar包和standard.jar包: http://jakarta.apache.org/taglibs/ 从上面的网址可以下载