Clang在使用插件时不会创建目标文件

0 plugins file object hyperlink clang

我正在尝试使用clang ++而不是g ++来创建稍后将由gnu链接器链接的目标文件.

我能够使用原生clang ++成功地做到这一点,但是当我使用clang ++和插件时,我收到一个链接错误:

clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

没关系!我只需要对象文件!但是,当我指定-S或-c时,我没有得到任何目标文件,即使我使用.o来显式指定输出文件.

即使使用clang的示例插件,我也无法做到这一点.

如何让clang给出一个目标文件?

非常感谢!

小智 7

我有同样的问题.对我来说,在我的命令行上用"-add-plugin"替换"-plugin"修复了问题.我不确定它的区别或原因是什么,但它确实如此.

此外,如果您在命令行中使用"-cc1",请尝试删除它并为每个插件特定参数添加前缀"-Xclang",即"clang -Xclang -load -Xclang plugin.so -Xclang -add-plugin -Xclang pluginName".再说一遍,我不确定为什么-cc1不能为我工作,但事实并非如此,这就解决了.

  • 使用`-cc1`你还必须提供所有包含路径和定义等.使用`-plugin`将用你的插件动作替换默认的"compile"动作.使用`-add-plugin`会将你的插件添加到默认的"compile"动作中.但是你的回答很有帮助! (2认同)
  • 你必须要注意,你用插件对AST做的任何修改都不会被带到最终的可执行文件中.当前插件(3.1,3.2)无法修改AST.CodeGenAction在插件之前运行,负责生成最终文件. (2认同)