`
lz1130
  • 浏览: 403653 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

原来我不懂编译安装!

阅读更多
以下引用:

我建议对“LAMP”构架应用不太熟悉的朋友直接使用系统提供的二进制代码安装——假如不是有什么特殊需求的话,比如领导强制要求必须使用最新版本的代码或者有特殊需求,比如有自己的“FHS”。其官方提供的二进制代码理论上是经过官方的技术人员的优化、以及多方测试的,甚至比不太熟悉的人用源代码编译得来的二进制,性能更高。随便说一下,这也是我觉得“服务器版”与“通用版本”之间可能存在的微弱或者重大的差别。并且,网上很多文章均使用源代码的方式安装程序,而很少有提及编译时strip代码的问题,这真是一个讽刺,对“优化”、“性能”如此注重之人,却使用包含着“symbols”(编译成生二进制程序时为调试和诊断而保留的非必需的结构)的二进制(strip之后,性能提高不敢乱言,至少文件大小会有惊人的变化:php-cgi strip之前12M,strip之后只有3M,无压力情况下,php-cgi占用的内存由5.5M降低到1.8M——数据仅供参考。)。系统提供的二进制,绝大多数都是“striped”的(使用file命令可以查看到二进制文件的相关信息)——不敢妄言“全部”,因为隐约记得TSL(TSL是一个声称像OpenBSD一样安全的Linux系统)的系统上,发现过没有strip过的二进制,可能是谬误。

即然提到了strip,随便也说一下如何strip二进制,Linux提供了事后strip程序的工具“strip”命令:

1. 查看程序是否是”striped”的

file  /opt/httpd/bin/httpd

假如需要strip,那么

2. strip /opt/httpd/bin/httpd

即可!

另外,其实编译代码的时候可以要求生成”striped”的代码,绝大多数开源代码,make里都提供了该参数,就是install-strip,即在编译完之后安装的时候,使用install-strip而不是install来strip程序再安装。

MySQL安装的时候使用make install-strip即可。

Apache要在./configure 时,加上 LDFLAGS=’-s’ 的选项即可。

PHP则需要在./configure之前,先执行一下export LDFLAGS=’-s’  (bash环境)。

可以细读金步国的作品:深入理解软件包的配置、编译与安装

写给自己:
原来我什么都不懂!虚心学习!
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics