delphi – 重新编译RTL – 如果可能的话呢?
我有这个渴望做一些实验,修改Delphi运行时库(RTL),system.pas和喜欢的underbelly …有可能吗?
我非常喜欢像“是的,但你必须提供定制的.obj文件为一些汇编的魔法,因为他们从未分发与官方的Delphi源”的挑战。跟我很好,我只想知道。 我想用Delphi 7做这个实验,但是在任何其他版本的内部信息都很好。与石器时代以来一直与德尔福合作的公司是其中之一。 (我总是认为这是一个RTFM问题,答案是一个响亮的“不!”,但由于某些原因谷歌不会确认它。) 解决方法
您可以像任何其他单元一样重新编译RTL。
对于System.pas,您必须使用命令行编译器。 例如,这里是一个工作批处理文件的内容(有一些没有很好记录的命令行开关): del *.dcu /s "c:program filesborlanddelphi7bindcc32.exe" -O+ -Q -M -Y -Z -$D+ System.pas 这将重新编译System.pas和SysInit.pas(两个最低级RTL文件)。 但是为了使用您重新创建的dcu文件,您必须将包含更新的dcu文件的文件夹放入IDE的第一个位置:例如,在Delphi 7中,它是Option / Environment Options / Library,然后将您的文件夹FIRST在“Libary路径”和“浏览路径”字段中。 这也许值得删除您的Delphi安装目录中的原始.dcu文件。 但请确保您不会更改设备的“接口”部分,否则您将无法与其他未经修改的RTL(或第三方组件)进行编译。您可以更改“实现”部分,应用修复或重写某些部分的速度等,但不要更改“接口”部分以避免任何链接错误。 始终备份您正在更改的原始.pas和.dcu文件。做一些自动编译测试是一个好主意,因此您可以确保对RTL的修改不会增加任何回归。 我们为Enhanced Run Time Library进行了这样的RTL重新编译,以提高低级RTL功能的速度(主要是System.pas和SysUtils.pas)。专为Delphi 7和2007设计。对于更新的Delphi版本,您仍然可以使用相同的原理。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |