musl-cc静态编译vim9
公司研发域的vim版本太老了,因此想换个最新的vim9。
且公司构建服务器上的libc的版本也低。因此很多预编译的二进制文件放进来后无法直接使用。vim也是一样。
因此周末就试着将最新vim9做了下静态编译。
1. mucl-cc
没有安装的话,可自行查阅安装。
musl-cc不依赖设备上的libc版本,其编译好的二进制文件,移植到低版本libc的机器也能正常使用。
2. ncurse
ncurse是tui图形界面库,vim编译时需要。
为了编译静态vim,因此ncurse这里也使用musl-cc编译一份静态库,后续编译vim做静态链接。
# 1. 下载 ncurses 源码
wget https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.4.tar.gz
# 下载好慢啊,几十KB/s
tar xf ncurses-6.4.tar.gz && cd ncurses-6.4# 2. 用 musl-gcc 静态编译
CC=musl-gcc ./configure \--prefix=/root/opt/musl-ncurses \--with-shared=no \--with-static=yes \--disable-shared \--enable-static \--without-adamake -j12 && sudo make install
上面的prefix可自行修改,代表安装的头文件、二进制、动静态库的存放位置。
3. 编译vim
github上下载最新的release版本
然后configure并编译:
# 3. 编译 vim 时指定路径
CC=musl-gcc LDFLAGS="-static -L/root/opt/musl-ncurses/lib" \
CFLAGS="-I/root/opt/musl-ncurses/include" \
./configure --with-tlib=ncurses \--with-features=huge \--enable-cscope \--enable-fontset --enable-multibyte \--enable-luainterp \--prefix=/root/.local/vim9 \--disable-gui \--enable-python3interp \--with-compiledby="zxqin"make -j12 && make install
注意,configure时将-L的链接查找路径和-I的头文件查找路径,都替换为上述编译安装好的相应的ncurse路径。
然后大功告成了。
可以将install的vim整个目录打个包,然后放到其他设备上愉快使用了。
如何优先使用自己编译的vim,而非设备上公共的vim,可自行查阅解决。
比如 alias vim=“/myvim”,或者PATH环境变量前将个人vim二进制的路径放到最前面。
