我正在尝试在 Ubtuntu 20.04 中从源代码安装 vim,同时支持 python3 和剪贴板。为此,我使用了插件站点,特别是以下修改后的 ./config 调用(我复制了链接的调用并添加了剪贴板支持):
./configure --with-features=huge \
--enable-multibyte \
--enable-rubyinterp=yes \
--enable-python3interp=yes \
--with-python3-config-dir=$(python3-config --configdir) \
--enable-perlinterp=yes \
--enable-luainterp=yes \
--enable-gui=gtk2 \
--enable-cscope \
--with-x \
--prefix=/usr/local
但是,在我运行此命令然后运行make
和 之后sudo make install
,编译后的 vim 不支持 python3。我认为发生的事情是,它打印出我的python 安装$(python3-config --configdir)
的配置路径,即,当我运行 make 时,它在最后返回:conda
/home/daniel/anaconda3/lib/python3.8/config-3.8-x86_64-linux-gnu
lto1: fatal error: bytecode stream in file ‘/home/daniel/anaconda3/lib/python3.8/config-3.8-x86_64-linux-gnu/libpython3.8.a’ generated with LTO version 6.0 instead of the expected 8.1
compilation terminated.
lto-wrapper: fatal error: gcc returned 1 exit status
compilation terminated.
/usr/bin/ld: error: lto-wrapper failed
collect2: error: ld returned 1 exit status
link.sh: Linking failed
make[1]: *** [Makefile:2062: vim] Error 1
make[1]: Leaving directory '/home/daniel/vim/src'
make: *** [Makefile:29: first] Error 2
这似乎表明需要给定版本的 LTO,但 conda Python 安装的是旧版本。
我曾尝试寻找系统 python 配置(我相信它是在中找到的配置)/usr/lib/python3.8/config-3.8-x86_64-linux-gnu
,并替换标志--with-python3-config-dir=/usr/lib/python3.8/config-3.8-x86_64-linux-gnu \
,但它似乎仍尝试使用 conda python 进行安装。
奇怪的是,几天前我让 vim 工作了,就像我想要的那样,但从那时起一定发生了一些变化(我用 pip 安装了一个库,我不知道这是否是原因),因为我突然失去了剪贴板支持,现在我无法让事情再次运行。
在我尝试使事情正常运行期间,我sudo make distclean
在 vim 源目录中运行。
我怎样才能让 vim 再次运行?我怎样才能让 vim 使用我的系统 python 版本而不是 conda 版本?或者还有其他可能的解决方案吗?谢谢
答案1
我找到了一个允许我安装具有所需支持的 vim 的解决方案。
我所做的是设置两个指向我的系统 python 的不同标志:
./configure --with-features=huge \
--enable-python3interp=dynamic \
--with-python3-command=/usr/bin/python3.8 \
--with-python-config-dir=/usr/lib/python3.8/config-3.8-x86_64-linux-gnu \
--with-x
因此,除了 --with-python-config-dir 之外,我还将 --with-python3-command 添加到系统 python 可执行文件中,这样我就可以安装 Vim。不过,这更多的是反复试验,而不是深刻的见解或知识