尽管我是Linux的新手,但我对C ++并不陌生。我正在使用CMake来预编译带有某些第三方组件的跨平台游戏引擎,但是我对使用库存在很多疑问。我的问题是如何使用第三方库以及将它们放在哪里。Apt将libs安装在其官方位置(/ usr / local,/ usr / lib / ..),但是我在Windows中使用项目目录中文件夹中的本地libs进行开发。
另外,我需要一个很好的教程来了解库的工作规则。例如:当尝试编译我的项目时,luabind要求提供liblua.s0.1,但是AFAIK无法使用Lua提供的源生成该库(至少进行make,make install)。
我知道,这个问题很模糊,但是我没有足够的经验来简化。
更新 :阅读一些答案后,下面是一个更简洁的问题。如果安装了所有第三方库,如何分发程序?如何在不使用大型自述文件的情况下管理依赖项?
在哪里放置图书馆
最好的解决办法是使用Linux发布版的包装系统(apt-get,yum或类似)从发行版提供的软件包安装库尽可能。
apt-get
yum
如果发行版的打包库的版本不够新,或者您需要一些非标准的构建选项,或者您需要发行版不提供的库,那么您可以自己构建和安装它。您有两个主要的库放置位置:
/usr/local
/usr/local/lib
/usr/local/include
/usr
LD_LIBRARY_PATH
ld.so.conf
图书馆如何运作
请参阅David A. Wheeler出色的编程库HOWTO。我建议您阅读该文章,然后将任何特定问题发布为新主题。
如何分发程序
传统上,Unix / Linux程序不包括其依赖项的副本。而是由最终用户或开发人员自行安装这些依赖项。正如您所说,这可能需要“大型自述文件”,但它有一些优点:
如果您要将程序分发给最终用户,则可能需要考虑提供一个软件包(.dpkg或.rpm),使他们可以简单地下载和安装而不用使用源代码。从最终用户的角度来看,理想情况下,应将软件包添加到发行版的存储库中(如果它是开源的,或者至少是免费提供的),以便用户可以使用其软件包管理器(apt- get或yum)下载它。由于那里有大量的Linux发行版,这一切都可能变得复杂,但是与Debian / Ubuntu兼容.dpkg以及与Red Hat / CentOS / Fedora兼容的Linux .rpm应该覆盖了很大一部分最终用户。构建软件包并不难,并且在线有很好的howto。
.dpkg
.rpm
apt- get