最近注意到VASP有Python 插件系统想要尝试以下,但是在按照文档编译的时候遇到了编译不通过的问题。经过stackoverflow上面的帖子评论解释,这个报错与link时的flag顺序有关,python的link命令应该出现在最后。可以通过调整makefile.include和修改src/makefile解决。具体方法如下:
按照官方文档,在makefile.include中添加如下行,但是将LLIBS的修改变为设置一个新的环境变量PY_PLUGIN_LIBS
CPP_OPTIONS += -DPLUGINS
PY_PLUGIN_LIBS = $(shell python3-config --ldflags --embed) -lstdc++
CXX_FLAGS += $(shell python3 -m pybind11 --includes) -std=c++11
修改src/makefile文件中plugin相关行,在LLIB结尾添加PY_PLUGIN_LIBS,以保证顺序
ifeq ($(PLUGINS),DPLUGINS)
LIB+=plugins
LLIB+=-Lplugins -lplugins $(PY_PLUGIN_LIBS)
INCS+=-Iplugins
endif
修改后重新make就可以通过了
津公网安备12010402001491号