用于Linux上软件开发的库位置和包

时间:2009-11-27 16:55:47

标签: linux development-environment

我们将很快启动一项新的基于Linux的开发工作;我们是Linux大规模开发的新手。我们有一个定义明确的流程来处理Windows上的第三方和内部库,但我对特定于Linux的变体和优化感兴趣。

似乎合乎逻辑(如在Windows上)

  1. 没有人都下载并编译自己版本的各种库,如boost / etc.但是在某处将官方版本登记到存储库。
  2. 为了进一步让上面的库二进制文件签入源代码控制,所以不同的版本可以绑定到我们的代码,所以例如我们的代码版本1.2需要提升1.41,整个过程才有效。
  3. 因此,我们是否应该将apt-get软件包用于具有正式版本的本地服务器?

    如果是这样,我们是否允许库安装到/ usr / local / include或其他地方的“自然”位置?

    如果没有;我们只是将库登记到我们的正常存储库位置,然后让我们的Makefile中嵌入了路径(相对或其他),以便依赖于/ usr / local /?< / p>

    请问其他人在这方面做了什么?对于基于Linux的团队开发(应用程序,而不是内核),书籍/站点的指针也非常受欢迎。

2 个答案:

答案 0 :(得分:1)

AFAIS使用您使用的库的普通占位符!用户会这样做。

但请检查所有库和配置脚本以及您使用的IDE和编译器以及编辑器和代码生成器(以及.deb,如果可用),这样当新计算机到达时,安装整个开发环境意味着只需在一个命令中创建回购!还有一些旧代码需要安装旧库! :D(对二进制搜索非常有用)

考虑使用和不附加库的方式发布应用程序的两种方法。因此,即使有人无法获得正确的版本,一切正常。 (例如Skype,Tlen)

添加脚本,自动为您的构建系统制作吸入器。只是有能力用一个命令来做它。

编辑(重播到下面的第一条评论):

不知道in-house是什么意思?!?你在家工作?

如果可能,请使用将在客户端计算机上使用的位置:)

将所有环境置于仓库中也意味着将记录对其的任何更改,如果需要返回,则仅表示输入一个命令。

开发环境中的任何更改都意味着可能会引入新的错误,因此无需重新安装环境就可以轻松跟踪它们(二进制搜索),这只会是一大优点。 如果您知道将使用不同版本的库,则二进制搜索需要手动安装不同的库:(

哦,还有一个提示:检查你的linux发行版的打包系统是否提供了从包中提取已安装文件的简单方法,只是为了自动添加新安装的dev env部分的过程。 repo(例如,一个脚本将接收包并将生成任何所需的文件到VC repo :)并且该脚本也应该被用于VC repo :))

如果难以维护库的spreed位置,请将它们全部放在一个文件夹中,并在每次更改时更新该文件夹。

答案 1 :(得分:0)

对于通常从Linux发行版中获得的库,我建议从那里获取它们。我只是根据开发所需的所有库来构建一个元包。对于基于Debian的发行版,可以使用equivs轻松完成。您还可以在那里指定所需的版本。如果您需要的版本,您选择的发行版不提供,您仍然可以在自己的apt存储库中托管它们。显而易见的是,将源和构建脚本保存到VCS中的所有自定义构建包是个好主意。

对于内部开发的图书馆和图书馆,您觉得需要在内部进行修改,这取决于具体情况。我不会将所有内容都粘贴到您的应用程序库中。而是使用jhbuild之类的工具来自动构建所需库的存储库。

为这些库构建deb和/或rpm包可能仍然是一个好主意。 “持续整合”是一个让人想起的流行词。

如果你需要修改你使用的开源库,我建议在有意义的上游发送补丁。这可能是额外的工作要做,但这不仅仅是为了与OSS社区合作,而且从长远来看可能很容易为您节省工作和悲伤。

希望有所帮助。