草庐IT

c++ - 如何在 Windows 上使用 GCC 4 构建 LLVM?

我已经能够使用MinGWGCC3.4.5构建LLVM2.6(llvm-2.6.tar.gz包)。我没有正确测试,但它似乎可以工作。问题是,我有自己的库,它们不使用GCC3构建,但在GCC4中可以正常工作(模板问题)。我相信MinGW的第一个官方GCC4版本是GCC4.4.0。编辑整洁-“试过这个试过那个”信息中的所有有用信息现在都在答案中。编辑这个问题/答案的大部分对于LLVM2.7来说都是多余的-标准配置,使例程在MinGW中正常工作,没有任何黑客或变通方法。 最佳答案 如果一开始你没有成功...我现在可以使用MinGWGCC4.

c++ - 是否可以在 llvm 中为用户定义的传递添加参数

现在我们正在执行llvm的分析过程,紧随thistutorial。.并且需要向插件传递一个额外的参数,如下所示:opt-load/path/to/myplugin.so-mypass-mypass_optioninput.bc但是我没有找到任何手册告诉我该怎么做。所以我想知道在实践中是否可能。提前致谢。 最佳答案 您应该使用CommandLineLLVM内置的库。基本上,您只需将pass的.cpp文件放在顶部即可:#include"llvm/Support/CommandLine.h"staticcl::optInputFilena

c++ - 是否可以在 llvm 中为用户定义的传递添加参数

现在我们正在执行llvm的分析过程,紧随thistutorial。.并且需要向插件传递一个额外的参数,如下所示:opt-load/path/to/myplugin.so-mypass-mypass_optioninput.bc但是我没有找到任何手册告诉我该怎么做。所以我想知道在实践中是否可能。提前致谢。 最佳答案 您应该使用CommandLineLLVM内置的库。基本上,您只需将pass的.cpp文件放在顶部即可:#include"llvm/Support/CommandLine.h"staticcl::optInputFilena

c++ - LLVM 位码跨平台

只是为了确定:LLVM位码是跨平台的吗?我的意思是,生成的IR(“.bc”)文件可以在各种平台上分发和解释/JITed吗?如果是这样,Clang如何将C++转换为平台无关代码?而在C++语言本身中,会在实际编译之前使用预处理器来确定其目标平台。 最佳答案 LLVMIR可以是跨平台的,除了其他人列出的明显异常(exception)。但是,这并不意味着Clang会生成跨平台代码。正如您所注意到的,预处理器几乎普遍用于仅将部分代码传递给C/C++编译器,具体取决于平台。即使在用户代码中没有这样做,许多系统头文件也包含一两个平台特定的,例如

c++ - LLVM 位码跨平台

只是为了确定:LLVM位码是跨平台的吗?我的意思是,生成的IR(“.bc”)文件可以在各种平台上分发和解释/JITed吗?如果是这样,Clang如何将C++转换为平台无关代码?而在C++语言本身中,会在实际编译之前使用预处理器来确定其目标平台。 最佳答案 LLVMIR可以是跨平台的,除了其他人列出的明显异常(exception)。但是,这并不意味着Clang会生成跨平台代码。正如您所注意到的,预处理器几乎普遍用于仅将部分代码传递给C/C++编译器,具体取决于平台。即使在用户代码中没有这样做,许多系统头文件也包含一两个平台特定的,例如

c++ - clang 和 __float128 错误/错误

我已经成功编译了当前3.3的clang分支。但是随后任何文件的C++编译都会因错误/错误而失败。可以解决吗?Infileincludedfrom/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/iostream:39:Infileincludedfrom/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/ostream:39:Infileincludedfrom/usr/lib/gcc/x86_64-linux-gnu/4.7/../../.

c++ - clang 和 __float128 错误/错误

我已经成功编译了当前3.3的clang分支。但是随后任何文件的C++编译都会因错误/错误而失败。可以解决吗?Infileincludedfrom/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/iostream:39:Infileincludedfrom/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/ostream:39:Infileincludedfrom/usr/lib/gcc/x86_64-linux-gnu/4.7/../../.

c++ - LLVM 编译器 2.0 : Warning with "using namespace std;"

在使用LLVM2.0的Xcode中,当我将行usingnamespacestd;放入我的C++代码中时,我收到以下警告:SemanticIssueUsingdirectivereferstoimplicitly-definednamespace'std'有没有办法解决这个问题?为什么会发出这样的警告? 最佳答案 您是否包含任何标准头文件?否则编译器不知道namespacestd.请发布更多代码以澄清。 关于c++-LLVM编译器2.0:Warningwith"usingnamespace

c++ - LLVM 编译器 2.0 : Warning with "using namespace std;"

在使用LLVM2.0的Xcode中,当我将行usingnamespacestd;放入我的C++代码中时,我收到以下警告:SemanticIssueUsingdirectivereferstoimplicitly-definednamespace'std'有没有办法解决这个问题?为什么会发出这样的警告? 最佳答案 您是否包含任何标准头文件?否则编译器不知道namespacestd.请发布更多代码以澄清。 关于c++-LLVM编译器2.0:Warningwith"usingnamespace

c++ - 使用 LLVM 进行静态源代码分析

我最近发现了LLVM(lowlevelvirtualmachine)项目,据我所知,它可用于对源代码进行静态分析。我想知道是否可以在程序中通过函数指针(找到调用者函数和被调用者函数)提取不同的函数调用。我可以在网站上找到这类信息,所以如果你能告诉我这样的库是否已经存在于LLVM中,或者你能给我指出如何自己构建它的好方向(现有源代码、引用、教程、示例...)。编辑:通过我的分析,我实际上想提取调用者/被调用者函数调用。在函数指针的情况下,我想返回一组可能的被调用者。调用者和被调用者都必须在源代码中定义(这不包括库中的第三方函数)。 最佳答案