git clone https://github.com/kiennq/emacs-build
cd emacs-build
.\emacs-build.cmd --slim --clone --deps --variant mps --build --branch sc
ratch/igc --with-mps --pdf-tools --hunspell --mu --isync --pack-all --with-tree-sitter=ifavailable
當msys2裝好後強制退出開始換源
進入emacs-build下載的ucrt64後執行如下命令
sed -i "s#mirror.msys2.org/#mirrors.ustc.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist*
pacman -Sy
然後在ucrt64中安裝libmps
cd emacs-build
sh ./.github/scripts/install-libs.sh
然後安裝pkgconf
pacman -S pkgconf
以上步驟為前置安裝操作
之後重新執行emacs的build命令
.\emacs-build.cmd --slim --clone --deps --variant mps --build --branch sc
ratch/igc --with-mps --pdf-tools --hunspell --mu --isync --pack-all --with-tree-sitter=ifavailable
其中msys2的最新版tree-sitter有問題,所以需要手動安裝舊版的tree-sitter,或者先用ifavailable命令代替,等安裝好之後手動複製dll到bin中
等安裝結束或者出現報錯後執行如下步驟
等安裝日誌在編譯emacs後出現安裝msys2的庫的時候說明已經安裝完成,在後續步驟中如果出現報錯也無所謂,這是在安裝一些dll,這些dll可以從kiennq的release中複製,安裝結果在emacs-build/pkg
中
此時按照Build Emacs 31 for Windows中的步驟執行如下命令
mkdir $target/lib/gcc
cp /ucrt64/lib/{crtbegin,crtend,dllcrt2}.o $target/lib/gcc
cp /ucrt64/lib/lib{advapi32,gcc_s,mingw32,msvcrt,shell32,kernel32,mingwex,pthread,user32}.a $target/lib/gcc
# 按照自己的gcc版本調整路徑
cp /ucrt64/lib/gcc/x86_64-w64-mingw32/14.2.0/libgcc.a $target/lib/gcc
cp /ucrt64/bin/{ld,as}.exe $target/lib/gcc
然後從kiennq/emacs-build: Scripts to build a distribution of Emacs from sources, using MSYS2 and Mingw64(32)中下載mps的msix,改字尾為zip解壓,複製其中bin
裡的dll到emacs-build/pkg
裡的bin中