用clang而不是gcc编译

用clang而不是gcc编译,c,gcc,makefile,clang,C,Gcc,Makefile,Clang,我已经下载了适用于Linux的openssh-6.4p1,我想用clang而不是gcc来编译它。如何告诉编译引擎执行此操作?是否需要修改配置?您可以尝试使用如下选项命令: option(USE_CLANG "build application with clang" ON) # OFF is the default if(USE_CLANG) SET (...) //... endif(USE_CLANG) 然后,您可以在if条件中包装clang编译器设置,如下所示: opt

我已经下载了适用于Linux的openssh-6.4p1,我想用clang而不是gcc来编译它。如何告诉编译引擎执行此操作?是否需要修改配置?

您可以尝试使用如下选项命令:

option(USE_CLANG "build application with clang" ON) # OFF is the default
if(USE_CLANG)
    SET (...)
    //...
endif(USE_CLANG)
然后,您可以在if条件中包装clang编译器设置,如下所示:

option(USE_CLANG "build application with clang" ON) # OFF is the default
if(USE_CLANG)
    SET (...)
    //...
endif(USE_CLANG)

Run:CC=clang./configure…这很有效,但是在这个过程中我如何保持生成的LLVM模块?我对LLVM了解不多。我不知道有什么方法可以做到这一点,除非LLVM可以在同一个命令中同时构建.o文件和模块文件。如果可以,您可以向编译行添加额外的参数,以强制使用CFLAGS。例如,CC=clangcflags='-emit llvm'/configure。如果您必须单独运行LLVM,一次获取对象,一次获取模块,那么在不对构建环境进行重大更改的情况下,很可能无法运行LLVM,因为您必须获取一组全新的规则。我只想获取每个C源文件的IR表示,以便对IR执行分析。在我分析它之后,我想把所有的IR文件编译成本机代码。它是只编译IR文件,还是编译二进制文件并把IR文件留在那里?我不确定我是否理解了指令。你知道我如何在编译过程中告诉clang发出LLVM模块吗?通常,人们会使用clang-emit LLVM somefile.C-S-o somefile.ll将C源文件编译成LLVM。我真的不明白如何使用这个答案?我应该在哪里写这个选项命令?