Re: 哪里可以找到 Debian 包的 Build Options ?
Boyuan Yang <[email protected]> Sat, 13 Jun 2020 09:30:54 -0400
| Newsgroups | gmane.linux.debian.user.chinese.gb |
|---|---|
| Message-ID | <[email protected]> |
在 2020-06-13星期六的 17:44 +0800,Liang Guo写道: > On Sat, Jun 13, 2020 at 5:23 PM Offline <[email protected]> wrote: > > > > Debian 包都提供了相应的源代码,一般有一个 orig 上游压缩包,还有一个 > > Debian 自身的补丁包。但哪怕在补丁包里也找不到 Build Options. 除了极少数 > > 微型软件,大多数软件都提供 Build 开关. Autotools, CMake, Meson 都如此。 > > 如果我想知道一个 Debian 包打开了哪些 Build 选项,又关闭了哪些选项。该从 > > 何处知道呢?难道 Debian 不提供这类信息? > > > 在debian/rules文件中写的,如果这个文件没有写,就是用默认参数进行编译的,实际编译时使用的选项可以看这个包的编译日志,以ocse > rv[1] > 为例, 查看其buildd log , 并选择对应的架构,就可以看到buildd编译的日志[3] ,进而找到对应的编译选项。 > > [1] https://tracker.debian.org/pkg/ocserv > [2] https://buildd.debian.org/status/package.php?p=ocserv > [3] > https://buildd.debian.org/status/fetch.php?pkg=ocserv&arch=amd64&ver=0.12.6-1&stamp=1579426930&raw=0 对 C/C++ 程序来说,实际上大概可以分三层来看: 1. Debian 默认的编译 flag 可以用 dpkg-buildflags(1) 工具查看[4]。请注意对于不同的 Debian 版本,由于该版本发行时 Debian 所采纳的政策不同,默认启用的 flag 也是不同的,拿新版工具得到的 flag 可能与软件包构建时实际使用的 flag 有出入。请以构建当时所使用的 dpkg-buildflags 工具的实际输出为准。该工具存在于 dpkg-dev 软件包中。请注意默认 flag 还会受到 DEB_BUILD_* 环境变量的影响,详情请读 [4] 的 FEATURE AREAS 一节。 2. 在此基础上,软件包打包者有可能因个人原因对特定的硬件架构或者特定的软件调整构建 flag(增加/删除/改变等级)。调整的具体原因是非常多样化的,从避免 bug、优化编译结果到个人偏好(最后一个原因常常是有害的)这些情况我都在 Debian 现有的软件中见过。在此情况下,除了如 Liang Guo 所述的深入阅读 buildlog 外没有更好的方法。 3. 某些麻烦的软件,尤其是没有采纳 Autotools/CMake/Meson 等标准构建系统的软件,会直接无视外部设置的编译 flag 自行设置一套编译选项。一般拿这种软件是没招的,你除了仔细阅读构建日志以外没有更好的方法。 另外如果谈论的不是 C/C++ 的编译优化选项,而是特定软件的功能开关的话(例如 --enable-xxx 或 -DSOME_MACRO=ON),一般都会在该软件打包目录的 debian/rules 文件中明确写出,未写出的则是采纳上游默认值。 综上,有通用的获取编译 flag 的方法,但因总有特例的存在使得通用方法永远不会 100% 保证可靠,必须深入底层看实际构建效果才能完全保证信息可靠。 -- Boyuan Yang [4] https://manpages.debian.org/unstable/dpkg-dev/dpkg-buildflags.1.en.html
signature.asc
(application/pgp-signature, 858 B)
-----BEGIN PGP SIGNATURE----- iQJFBAABCgAvFiEEfncpR22H1vEdkazLwpPntGGCWs4FAl7k1Q8RHGJ5YW5nQGRl Ymlhbi5vcmcACgkQwpPntGGCWs4TyxAAo1KEcn/Yq6A8AwaQVzXcP2GdBSmieeCo 0BiLhgWQH46aCKj0v+phGyJo+szfg6LM+0W5tnXzzTDpykatU1qLVlfccWv5GMev TURTMQzzCe5dLLeo8VvEtRYQh+r6KVtmpDNfDnxWUVrxiKEo9AtEkzQycHI0TUJj cFqTUlTfJOAB+z5WejxwWBayTG3xQSwrPohM9EvNECdTc1+NeeyXyYqGWu7shx8U awI2dGKKQ8cq41sdvUtgfL2oNMx/pYTqeelgwBgZxFSF/IpOqo2YF2DuRcI8HXk4 QObQWhkF81d9TECdN00c+xVNW69Tt7O+sIbZWafuNYA/QIf6zZECGRSvxmEj4kQ5 EMj8UCIRnLwdzrD8kFez35Gu7er1QK/5F6qc2oVS4Kx8zfaPyk7eIXwHWDCpPAYz 46gCzYxRL5Yf0Obxlt/UyYW9zgzWDXMpamVbv/Uzl9YXpet7sFNrR9H9diskjKK8 +/GGhTDLfccm0NrNBBbePVUW6/qJIDHDHL8zjHbw8u6MC5Bl3QVHPBUXDmAnPCSW qv0Uh13PCoNxwQsoHLxV+U/RI0W4rcg+8iqbmgxhNby1MzWVh73Jm239I2J0NXX4 Tiq8D6TIxLUVUIdHjf0Uz6Icak+fucegD2RnuvoCnhlQtaBhKWebhszlew8DQXGw +l1TVPFOL+E= =Nfi4 -----END PGP SIGNATURE-----