繁体   English   中英

在Emacs上交叉编译

[英]Cross compile on Emacs

我如何在Emacs上创建/发出编译命令,所以不需要在它与控制台之间来回切换? 我通常希望使用Emacs命令查看编译过程:

$ export PATH=/toolchain/gcc-linaro-arm-linux-gnueabihf-4.7/bin:$PATH
$ cd my/project 
$ make CROSS_COMPILE=arm-linux-gnueabihf- all

我按照说明尝试制作自己的Mx compile命令版本,但由于我对Lisp和Emacs的内部知识不够熟悉而失败了。 请注意,所涉及的项目很大(即内核),具有多个目录和Makefile,因此上一个链接中描述的方法(最近的Makefile,默认目录等)不是解决方案。 如果您可以将其绑定到单个键(例如现代IDE上的Fx键),则可以得到加分。

PS我知道有一个类似的问题 ,但是它已经过时并且不涉及交叉编译问题,我希望现在有一个更好的解决方案。

Ctrl U Meta x编译应询问您要使用的编译命令。 您可以输入make CROSS_COMPILE=arm-linux-gnueabi all

否则,可以在~/.emacs配置compilation-command Emacs变量。 并且您可以将其设为文件本地变量。

您可以在~/.emacs放入以下未经测试的行

 (load-library "compile")
 (global-set-key [f12] 'recompile)
 (setq compilation-command "make CROSS_COMPILE=arm-linux-gnueabihf all")

顺便说一句,你的export PATH= ...可以添加,例如在你~/.bashrc ,或者你可以有一个shell脚本运行的,准确的make与适当的PATH ,并让该脚本是您的Emacs compilation-command (甚至可能是“暂时”,即仅在您的emacs会话中)

您可以创建一个在特定目录中运行特定编译命令的自定义函数,如下所示:

(defun my-compile ()
  (interactive)
  (let ((default-directory "~/my/project"))
    (compile "export PATH=/toolchain/gcc-linaro-arm-linux-gnueabihf-4.7/bin:$PATH && make CROSS_COMPILE=arm-linux-gnueabihf- all")))

然后将其绑定到一些方便的键:

(global-set-key [f12] 'my-compile)

暂无
暂无

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

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