我正在尝试使用 libclang 中可用的前端为 C 代码编写一个简单的语法检查器。由于部署问题,我需要能够静态链接 libclang 中的所有库,而不是传递包含所有库的 .so 文件。
我正在从源代码构建 clang/llvm,并且在 llvm/Release+Asserts/lib 中我有一堆 .a 文件,我认为我应该能够使用它们,但它似乎从来没有工作过(链接器喷出数千有关缺少符号的错误)。但是,当我使用 libclang.so 编译它时,该目录中也存在如下:
clang main.c -o bin/dlc -I../llvm/tools/clang/include -L../llvm/Release+Asserts/lib/ -lclang
一切似乎都运作良好。
为了使这项工作,我需要包含最少的 .a 文件集是多少?我已经尝试在构建输出目录中包含绝对所有的 .a 文件,并以不同的顺序将它们提供给 clang/gcc,但没有任何成功。我只需要 libclang 的 Index.h 中提到的函数,但似乎没有任何资源或文档说明各种 libclang*.a 文件的用途。了解 libclang.so 引入了哪些文件会非常有帮助。