簡體   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