最近看大家都说native-comp很快,决定装一个试试。然而在论坛和网上只找到了linux和windows下的编译方法,虽然macOS与linux下编译挺类似,但还是有很多地方有各种各样的问题。。自己摸索了半天终于编译成功,确实能感觉到速度有明显提升。下面分享下编译过程和踩的坑:
- 从github镜像下载gcc releases/gcc-9分支,如果下载速度太慢,可以在码云上从github拉取后再从码云下载,速度极快。我是下载到~/jit/src目录。然后编译gcc with libgccjit.so,并install到usr/local中
cd jit
mkdir build
cd build
../src/configure --enable-host-shared --enable-languages=jit,c,c++,objc,obj-c++ --enable-checking=release --disable-bootstrap
make -j2
make install
- git clone Emacs native-comp 分支代码,比如到~/emacs,然后编译。注意:configure这一步要加上CC=‘clang’,如果不加它会默认用gcc,这会导致错误:appkit/AppKit.h: present but cannot be compiled. 这是我当时遇到的问题,加上CC='clang’就解决了
cd ~/emacs
./autogen
./configure --with-nativecomp CC='clang'
make
native-comp默认的编译优化级别是O2,这样在第二步时编译ELC+ELN时会花很久(我当时不知道,然后编了9个小时…当然也是因为我只开了一个进程,在make时加上-jn可以开n个进程同时编译),可以在lisp/emacs-lisp/comp.el中改comp-speed这个变量,改成0或1
Emacs编译成功后,就可以进去执行(native-comp-async “~/.config/emacs/elpa” n t) (n同上,指开几个进程)把自己安装的包也编译一下。编译完后速度快到飞起,lsp-mode无丝毫卡顿