首页 > 解决方案 > Vim 动态链接依赖项未通过 ldd 列出

问题描述

成功从源安装vim

$ git clone https://github.com/vim/vim && cd vim
$ ./configure --prefix=/usr/local --enable-gui=no --enable-python3interp=dynamic
$ make CFLAGS='-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1'
$ sudo make install

测试插件python3成功

python3 << EOF
print("Hello, Python3!")
EOF

检查是否python3动态链接

$ /usr/local/bin/vim --version
+python3/dyna
$ ll -h /usr/local/bin/vim
2.6M
$ ldconfig -p | grep python3
libpython3
$ ldd /usr/local/bin/vim | grep python
(nothing)

libpython3应该列出一些东西,为什么这里什么都没有显示?

标签: vimldd

解决方案


当您使用dynamic未链接的库时,它会在首次使用时由 vim 二进制文件加载,使用dlopen(). 来自:help python-dynamic

在 MS-Windows 和 Unix 上,Python 库可以动态加载。:version 输出包括 +python/dyn 或 +python3/dyn。

这意味着 Vim 只会在需要时搜索 Python DLL 或共享库文件。当你不使用 Python 接口时你不需要它,因此你可以在没有这个文件的情况下使用 Vim。

...

'pythondll' 或 'pythonthreedll' 选项可用于指定 Python 共享库文件...

:help 'pythonthreedll'

指定 Python 3 共享库的名称。默认值为 DYNAMIC_PYTHON3_DLL,它是在编译时指定的。


推荐阅读