gcc - 如何编译 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
文件。
解决方案
一些语法有外部扫描器——手写的 C/C++ 源文件,按照约定称为scanner.c
or scanner.cc
,需要与parser.c
.
推荐阅读
- javascript - 如何删除 JavaScript RowDataPacket 数组中的重复数据
- mysql - SQL:一对多关系——只返回所需的值
- perforce - 将带有 Perforce 工作区的驱动器从一台计算机移动到另一台计算机
- python - 大熊猫的数据框枢轴
- powershell - 创建数组并将其从一个函数传递到另一个函数
- html - bootstrap flex 不将内容居中
- angular - 如何在 Angular 8 中正确实现 HTTP 拦截器?
- flutter - 为什么在 StatefulWidget 中没有定义 build 方法?
- python - uWSGI 应用程序找不到挂载点,但加载了 html
- c# - 如何将返回代码添加到位于单独的 xaml 文件(没有 .cs 文件相关)中的数据模板控件的事件?