Sc1.exe 是用啥语言编写的?
Posted
技术标签:
【中文标题】Sc1.exe 是用啥语言编写的?【英文标题】:What language is the Sc1.exe written in?Sc1.exe 是用什么语言编写的? 【发布时间】:2013-11-25 18:35:08 【问题描述】:在 SciTE 下载页面 (http://www.scintilla.org/SciTEDownload.html ) 有一个链接:
“称为 Sc1 (720K) 的单个文件可执行文件不需要任何 DLL 或属性文件,因为它们已链接到可执行文件中。”
那是用什么语言写的?我下载了超过 2 MB 压缩和超过 7 MB 解压缩的源代码,但单个 exe 为 720K。
他们是否为这个小的独立 exe 使用了不同的语言?他们是怎么把 DLL 文件放在那里的?
他们为 GUI 使用了什么? Python、LUA 还是 MFC?
Python 解释器和 Lua 解释器是否也嵌入到 exe 中?
谢谢!
【问题讨论】:
他们并没有真正“将 dll 文件”放在那里,而是将他们的 exe 静态链接到其外部依赖项。但这会增加 exe 的大小,所以它不能回答你的问题;) 【参考方案1】:答案在他们的download webpage 上:他们使用了UPX 可执行压缩器。它非常有效地压缩可执行文件,因为与 zip 不同,它区分数据/代码部分并以不同方式处理它们。解压器非常小,嵌入在最终的 exe 中;代码和数据在应用程序启动时在内存中解压缩。根据wiki,使用了UCL和LZMA压缩算法。
scite 源目录是 3Mb 未压缩的,用 C++、python 和 lua 编写。单个exe不附带的属性文件将近800kb,doc是500kb。其实有1Mb左右的源代码,应该会生成一个1-5Mb范围内的exe,然后再通过UPX压缩成一个720kb的文件。
【讨论】:
那么Python解释器和Lua解释器也嵌入到exe中了吗? Lua 是嵌入式的,但它很小。 Python 是构建时依赖项,脚本用于准备构建和自动化一些源代码操作,所以不,它不是嵌入的。 感谢@Antoine,这真的很酷。你碰巧知道他们用来创建 GUI 的东西吗?我在他们的网站上找不到。 看代码,GUI是基于Scintilla的。他们似乎还使用本地库(Windows 上的 Win32 API 和 linux 上的 GTK+)手动实现了一些组件。以上是关于Sc1.exe 是用啥语言编写的?的主要内容,如果未能解决你的问题,请参考以下文章