繁体   English   中英

如何跨iOS编译Emacs

[英]How to cross compile Emacs for iOS

Emacs 23.2已在越狱的iOS设备上使用cydia为iOS进行了编译- 源码

我将如何仅使用Mac作为构建主机将静态链接的64位,最小化,非GUI Emacs交叉编译到iOS? 最好使用Emacs自己的configure&make(可能需要一个补丁)。

让我们忽略代码签名和在非越狱的iOS设备上运行此cli二进制文件的问题(我知道如何解决这两个问题)。

Emacs并不真正支持交叉编译。 少数人已经完成了交叉编译,但是需要相当多的摆弄,而且没有人为Emacs提供补丁来简化工作:-(

出现的问题如下:

  • 从Git克隆构建Emacs时,Emacs本身会构建一些文件(大多数是.elc文件),因此您需要先构建“主机Emacs”来编译这些文件,然后再交叉编译“目标Emacs”。 从正式发行版的tarball进行构建时,这些文件应该已经构建并包含在tarball中,因此希望该问题不会出现。
  • 更麻烦的是:就像@lawlist提到的那样,Emacs生成过程首先生成temacs可执行文件,然后执行该可执行文件以加载一堆“预加载”的Elisp文件,然后使用该进程的内存映像生成新的可执行二进制文件(实际的emacs )。 这称为“转储”。 这样做是为了启动Emacs更快,因为它不需要去加载所有这些Elisp文件。

实际上,您可以使用temacs而不是emacs ,它应该可以正常工作。 甚至还有一个名为CANNOT_DUMP的CPP标志,您可以使用它来进行一些调整,以使temacs工作原理更好一些。 这将使启动新的Emacs进程的速度变慢,并且该模式基本上从未经过测试,因此请期待一些古怪和问题。

您可以通过先交叉构建temacs ,然后在目标主机上运行它来解决该问题。 当然。 但是请注意,此“转储”操作需要针对每个OS进行100%的不可移植的修改,因此,现有的转储代码很可能不适用于iOS(即,将生成一个二进制文件,该二进制文件将在开始)。

您说过“ Emacs 23.2已为iOS编译”,这听起来像是较旧的Emacs版本已解决了其中一些问题,所以也许我没有希望。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM