2012-07-13 55 views
0

我试图用clang ++代替g ++来创建稍后将由gnu链接器链接的目标文件。Clang在使用插件时不创建目标文件

我很能成功做到这一点使用本地铛++,但是当我使用铛++有一个插件,我得到一个链接错误:

铛:错误:连接命令,退出代码为1(使用失败 - v看到调用)

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

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

我怎样才能得到一个对象文件的铿锵声?

非常感谢!

回答

6

我有这个相同的问题。对我来说,在我的命令行中用“-add-plugin”替换“-plugin”修复了这个问题。我不确定它们之间有什么不同,或者它为什么起作用,但它确实如此。另外,如果您在命令行中使用“-cc1”,请尝试删除它并在每个插件特定参数前加上“-Xclang”,即“clang -Xclang -load -Xclang plugin.so -Xclang -add -plugin -Xclang pluginName“。再次,我不知道为什么-cc1不适合我,但它不是,这固定它。

+2

使用'-cc1',您还必须提供所有包含路径和定义等。使用'-plugin'将用您的插件操作替换默认的“编译”操作。使用'-add-plugin'会将你的插件添加到默认的“编译”操作中。但你的回答很有帮助! – RedX 2012-09-19 08:18:17

+2

您必须小心,但是您对插件执行的任何修改都不会被带到最终的可执行文件。目前的插件(3.1,3.2)不能修改AST。 CodeGenAction在插件之前运行,负责生成最终文件。 – RedX 2012-09-19 16:24:21

相关问题