首页 > 解决方案 > 如何编译 tree-sitter 解析器?

问题描述

我正在尝试编译用于​​ neovim 的 typescript 、tsx和 python 解析器,但是当我按照tree-sitter tracking issuegcc -o parser.so -shared src/parser.c -Os -I./src的指示运行时,我得到:

Undefined symbols for architecture x86_64:
  "_tree_sitter_tsx_external_scanner_create", referenced from:
      _tree_sitter_tsx.language in parser-eb4e9b.o
  "_tree_sitter_tsx_external_scanner_deserialize", referenced from:
      _tree_sitter_tsx.language in parser-eb4e9b.o
  "_tree_sitter_tsx_external_scanner_destroy", referenced from:
      _tree_sitter_tsx.language in parser-eb4e9b.o
  "_tree_sitter_tsx_external_scanner_scan", referenced from:
      _tree_sitter_tsx.language in parser-eb4e9b.o
  "_tree_sitter_tsx_external_scanner_serialize", referenced from:
      _tree_sitter_tsx.language in parser-eb4e9b.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我已经运行了 npm 构建步骤,并在构建中尝试了 make 文件,但我无法获得最终.so文件。

标签: gccneovimtsxtreesitter

解决方案


一些语法有外部扫描器——手写的 C/C++ 源文件,按照约定称为scanner.cor scanner.cc,需要与parser.c.


推荐阅读