首先,请阅读有关控制文件的 Debian 文档。
您需要在debian/control
文件中指定的是-dev
section 中的包Source
。在Package
您描述在大多数情况下生成的二进制包的部分中,行Depends: ${shlibs:Depends}, ${misc:Depends}
就足够了。确保dh_shlibdeps
运行debian/rules
。据我所知dh_make
,为您提供了这些内容 - 请查看dh_make
文档。
.so
了解带扩展名的库之间的区别.so.some.numbers.here
。这里提供了很好的解释。
所以,debian/control
你应该有一个源包部分:
来源:packagename Build-Depends:packages-dev, other-packages-needed-for-build [其他字段]
以及从此源构建的二进制包的一个或多个部分:
包:packagename 依赖:${shlibs:Depends}, ${misc:Depends} [其他字段]
如何确定要放入 Build-Depends 中的包?如果您需要选项 -lfoo 来成功链接您的软件,这意味着您需要有一个文件 libfoo.so 可用。该-pthread
选项隐式添加-lpthread
选项。因此,对于 PCRE,您需要有libpcre.so
文件,对于 pthreads - libpthread.so
。建立名称后,将dpkg -S
所有这些文件名作为参数运行。您可能希望grep
结果只获得 .so 文件,而不是 .so.something。
arturcz@szczaw:~$ dpkg -S libpcre.so libpthread.so | grep '\.so$'
libpcre3-dev:amd64: /usr/lib/x86_64-linux-gnu/libpcre.so
libc6-dev:amd64: /usr/lib/x86_64-linux-gnu/libpthread.so
因此,您想要作为 Build-Dependencies 的包名称是:libc6-dev 和 libpcre3-dev。然而,另一个规则是在 Debian 中使用。有些包被认为是构建必需的,您不需要将它们放入 Build-Dependencies 中。libc6-dev 就是其中之一。如果您正确地对您的软件进行了 debianized,${shlibs:Depends}, ${misc:Depends}
则将被适当的内容所取代。
我将如何确保这将起作用,让我们说将来是否会出现 libcurl4 或 libcrypto++99。我是在遵循正确的方法还是遗漏了什么。
你不会的。如果库的 SONAME 中的主编号发生了变化,则意味着两个库的 API 或行为都发生了变化。您需要使用新库再次编译您的软件,对代码进行必要的更改,然后对其进行测试并修复问题。
进一步推荐阅读: