Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

版权申明
查看: 9160|回复: 4

Faqs 1:为什么FreePascal编译成二进制文件会如此之大?

[复制链接]

该用户从未签到

发表于 2009-10-13 09:42:41 | 显示全部楼层 |阅读模式
编译产生的二进制文件如此之大的原因是,它包含了许多 gdb (GNU debugger,GNU 调试器)所需的信息。Free Pascal 编译器提供了一个命令行选项 -Xs 来移除这些调试信息。(注意,由于一个 bug,版本 2.0.2 及以前的编译器无法正确执行该选项。)您可以利用一个名为 strip 的程序来移除可执行文件中的所有调试符号 (debug symbols)。该程序位于 Lazarus 目录 \lazarus\pp\bin\i386-win32 下。要利用 strip 做到这一点,只需执行strip --strip-all exepath[/pre]其中 exepath 是您希望处理的可执行文件的路径名。如果您还希望让您的程序变得更小,不妨使用 UPX。UPX 是一个优秀的 EXE 压缩程序。由于使用了就地解压(in-place decompression)技术,它不会产生额外的内存开销。并且它的解压速度非常快(在 Pentium 133 上约为 10 MB/秒)。要使用 UPX,只需执行upx exepath[/pre]其中 exepath 是您希望处理的可执行文件的路径名。一个简单的 GUI Lazarus 程序在使用过 strip 和 UPX 後,压缩效果为:在 Linux 上,约 700 KB;在 Windows 上,约 420 KB。请注意 UPX 有时并非只会带来好处。要了解使用 UPX 可能带来的坏处,请参阅 Size Matters。另外值得注意的是,用 Lazarus 创建的程序——即使是十分简单的 Hello World 程序——也已经包含了大量重要的功能,包括XML 处理库;图像处理库,用于 PNG,XPM,BMP 和 ICO 格式;Lazarus 组件库中的几乎所有组件;全部 Free Pascal 运行库。因此,虽然您的程序可能显得很大,但它已经包含了一个真实世界中的非平凡 (non-trivial) 应用程序所需要的全部。也因此,虽然用 Lazarus 创建的应用程序可能在一开始显得很大,但是,随着程序复杂度的增加,其大小的增长速度却很慢。这是由 Free Pascal 编译器和 Lazarus 窗体的工作原理决定的。与许多其他语言相比——例如——一个典型的 C++ 程序最初可能很小,但当您向其中加入各种功能时,其大小可能按指数级增长。

评分

参与人数 1威望 +10 收起 理由
猫工 + 10 优秀文章

查看全部评分

回复

使用道具 举报

该用户从未签到

发表于 2009-10-13 10:40:33 | 显示全部楼层
原来如此,哦......
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2021-8-26 17:08
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2010-8-28 21:11:02 | 显示全部楼层
    那么请问一下在windows下运行速度与delphi比如何?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2010-8-30 18:59:16 | 显示全部楼层
    引用第2楼delphicn于2010-08-28 21:11发表的  :
    那么请问一下在windows下运行速度与delphi比如何?
    都是调用了OS的API,没什么两样。其实FREE PASCAL比OBJECT PASCAL 在很多方面更有优势。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2012-7-13 16:22:49 | 显示全部楼层
    非常内行的解释,明白了许多。
    QQ:仍然RAD
    回复 支持 反对

    使用道具 举报

    *滑块验证:

    本版积分规则

    QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

    GMT+8, 2025-5-2 23:13 , Processed in 0.097480 second(s), 13 queries , Redis On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表