从源代码与 deb 包编译
Posted
技术标签:
【中文标题】从源代码与 deb 包编译【英文标题】:Compiling from source vs. deb package 【发布时间】:2011-02-21 19:00:54 【问题描述】:我正在 Ubuntu 上从源代码编译几个 C/C++ 包。我将构建的结果与使用 debian 安装运行的结果进行比较,发现我的可执行文件速度较慢。
我使用readelf -a
来比较两个可执行文件。 '.rela.dyn' 的重定位部分之类的东西有很大的不同,但我不确定我应该寻找什么文档来理解这样的差异。
有人对尝试调整 gcc 以生成我在 deb 包中找到的可执行文件有任何建议吗?
【问题讨论】:
您使用哪些编译器标志? 你编译过 -O3 -DNDEBUG 和相关选项吗? 我已经尝试过优化标志。我发现 -O2 和 -O3 之间没有明显区别。使用这些标志中的任何一个,我的构建需要 4 分钟只需要 deb 包 3 分钟 30 秒。 这是一个简单地用尽编译器标志组合直到找到我最喜欢的组合的问题吗? 【参考方案1】:好吧,因为它是开源的,你应该得到他们用来生成可执行文件的编译标志:)
my2c
【讨论】:
并在构建 .deb 之前获取他们可能已应用于源的补丁 我一直在寻找一种方法来获取他们使用的编译器标志,但我不确定如何。 @ajwood:您可以使用apt-get source
获取并解压 Debian / Ubuntu 源代码包,其中将包括上游源代码、任何分发补丁以及用于构建 .deb
的构建脚本.
@caf:它似乎与我一直用于构建的包源相同。它附带了我可以用来生成 Makefile 的 autotools 脚本,但我仍然需要知道要传递哪些标志 configure
。
@ajwood:debian 包是通过自动构建系统从该源包构建的,因此传递给 configure 的标志肯定在某个脚本中,可能在 debian/
目录中。
以上是关于从源代码与 deb 包编译的主要内容,如果未能解决你的问题,请参考以下文章
使用Alien将RPM从DE转换为DEB和DEB转换为RPM包