我是目标C的初学者,我真的需要帮助。当我为测试而构建时,我得到了一个Apple LLVM 5.0错误
clang: error: no such file or directory: 'flag'
Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang failed with exit code 1
代码如下:
过程PCH
/Users/donald
我想使用llvm dis生成人类可读的ll文件,但我收到了erorr
llvm dis:无效的位码签名使用-S选项,clang已生成人类可读的llvm程序集。因此,您的.bc文件实际上不包含位代码,这就是llvm dis无法读取它的原因
clang hello_world.c -S -emit-llvm -o hello_world.bc
llvm-dis hello_world.bc
除了菜单之外,它还有一个用于OAuth风格登录的窗口。该窗口已附加网络视图
应用程序的对象-C部分不是很大,但有很多C++交互。
因此,在我的AppDelegate.h中,我有以下内容。我不确定loginWindow是否应该强大
@property (strong) NSWindow * loginWindow;
@property (strong) IBOutlet WebView * loginView;
@property (strong) NSString
我希望预处理器以这种方式缩进:
int foo_func()
{
normal_code();
normal_code();
#ifdef FOO
# define aaa
# define bbb
code_that_only_foo();
code_that_only_foo();
#endif
normal_code_again();
normal_code_again();
}
我尝试过使用clang格式,但它删除了#指令之后的所有空
标签: Clang
abstract-syntax-tree
我正在使用clanglib为一些特定函数编写编译器前端。当我遍历一些类似这样的代码时:
typedef int integer;
struct _s {
integer i;
float f;
};
当我访问feildDecl“integer I;”时,我想得到“int”而不是“integer”。
是否有任何clang的API可以轻松获得这样的底层类型?我需要的是getSplitDeSugardType()。此APIdesugar类型,这意味着获取糖化类型的基础类型
标签: Clang
clang++llvm-clangclang-static-analyzerlibtooling
TL;博士
如何从callExpr->arg_0->DeclRefExpr获取用于常量数组声明大小的宏名称
详细问题陈述:
最近我开始研究一个挑战,它需要源到源转换工具来修改
带有附加参数的特定函数调用。研究我可以实现的方法我介绍了我
到这个惊人的工具集叮当声。我一直在学习如何使用libtooling中提供的不同工具
实现我的目标。但现在我遇到了一个问题,请在这里寻求您的帮助
考虑到下面的程序(伪源代码),我的目标是重写对strcpy的所有调用
函数,并在新函数调用中添加一个附加参数
i、 e-
我的目录结构如下所示:
-misc
-- misc.h
-- misc.c
-- misc.la
-dict
-- dict.h
-- dict.c
-- dict.la
-main
-- main.c
我正在尝试将main.c构建到一个程序中main.c包含对dict.c中函数的引用,dict.c包含对misc.c
我如何告诉automake将dict.la,misc.la包含在构建main?
换句话说,我想包括由顶级make生成的所有*.la文件
当然,这只是一个例子,在实际场景中,我
我正在使用clang进行某种源代码到源代码的转换。我想做以下工作:
我在C语言中有一些函数类,它们是va_arg函数,例如printf()。源文件中可能有许多对printf()的调用。我想解析源代码并找到所有这些对printf()的调用。此外,我想找到传递给printf()的参数类型。所以,如果我有
int a, b, c;
printf("%d%d%d", a, b, c);
我想知道对printf的特定调用是printf(char*,int,int,int)类型。我并不特别关心资格赛
有人
对于Xcode 4.4和更早的版本,每个SDK都有一个副本或一个指向Clang编译器的符号链接,可在
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/
SDKs/iPhoneOS${IPHONE_SDKVERSION}.sdk/usr/bin/clang++
对于Xcode 4.5.2,在上面的路径中没有铿锵编译器。然而,我在
/Applications/Xcode.app
我最近将我的Xcode从6.4更新到了7,并将我的所有代码都修复为与Swift 2兼容
我遇到了一个问题:在构建项目时,会出现以下错误:
ld:未找到框架-L/Applications/Xcode.app/Contents/Developer/toolschains/XcodeDefault.xctoolschain/usr/lib/swift/iphonesimulator
叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用)
我已尝试通过添加以下内容来更改生成设置中的库搜索路径:
我试图从编译器生成的LLVM位代码运行程序,但当我运行lli命令时,它返回一个错误
lli-3.6: test2.ll:9:1: error: expected instruction opcode
当我将lli与clang-S-emit llvm生成的.ll一起使用时,它会工作。不过,这段代码中有许多优化。我试图手动插入其中一些,但没有成功
我的问题是,我不知道我的代码的结构是否正确,或者它是否只是缺少一些特定的东西,以便解释器正常工作。最初,我尝试在代码中使用JIT,但它给了我更多关于库的
标签: Clang
Llvm
abstract-syntax-treellvm-clang
我试图检测if语句中是否有函数调用作为条件的一部分;例如:
if (cmp(a, b)){
\\do something
}
I have found I could do this with AST matcher in following manner:
Matcher.addMatcher(ifStmt(hasCondition(callExpr().bind("call_expr")))
.bind("call_if_stmt")
标签: Clang
clang-static-analyzer
我正在尝试使用一些额外的工具,如clang check,但我发现它无法按预期处理.h文件,如果该文件重命名为.hpp文件,则可以,但我不想更改文件扩展名。有没有方法让CLAN检查处理?H头作为C++文件?< p>带-OX-ARG之前= -XC++选项可以解决我的问题
标签: Clang
cocoapodsmodule-map
例如,此.modulemap工作:
framework module MySDK {
umbrella header "MySDK-umbrella.h"
header "inc/header1.h"
header "inc/header2.h"
header "inc/header3.h"
...
export *
module * { export * }
}
但这一条没有:
framework module MySDK {
umbrella header
我想找到所有参数为引用类型的方法,
在所有返回stmt之前添加一些代码。
这是我的密码:
Matcher.addMatcher(cxxMethodDecl().bind("r"), &HandlerForReturn);
const cxxmethoddel*re=Result.Nodes.getNodeAs(“r”);
if(sourceManager->iswriteniminmainfile(re->getBeginLoc())){
如果(re->getnameastring()
接着这个有趣的问题,我总是检查一个类型是否是规范的,并得到它的规范类型。但是我怎样才能得到结构类型的细节呢?例如,结构定义中的字段:int g,tomate rouge
struct _poire {
int g;
tomate rouge;
};
我读了这本书,但还没有找到答案。谢谢你的回答
我有一个程序foo.c,我用clang-c-emit llvm foo.c-o foo.bc编译它。它返回一个foo.bc。
因此,我运行opt-dotcgfoo.bc以获得.dotcfg。但是,我收到一个警告:
警告:您正在尝试打印位代码文件。
这是不可取的,因为它可能会导致显示问题。如果
你真的想亲自体验LLVM位代码吗
可以使用-f选项强制输出
如果我使用-f,我会得到一个不可读的文件。更新
警告与opt的位码输出有关,与点输出无关。您可以使用-disable output禁用位码输出,或
标签: Clang
static-analysis
我已经在Ubuntu桌面上安装了scan build/clang 2.9版。我使用make构建我的C++源代码。正如它所说,扫描构建将分析使用make构建的项目,如果您给出
scan-build make
到
但是在make之后,我看到了一条消息
scan-build: Removing '/tmp/scan-build-2013-10-16-1' because it contains no reports.
也试过
scan-build --use-c++=/use/bin/clang
我需要在llvm过程中提取目录和文件名。
llvm的当前版本将getFilename和getDirectory从DebugLoc移动到DebugInfoMetadata。我无法直接在DebugLoc标题中找到类成员getFilename。因此,如何从指令转到源代码文件名和目录
此外,还有一个打印函数可能会有所帮助,但它只需要llvm::raw_ostream,不能重定向到std::string
void print (raw_ostream &OS) const
// prints s
标签: Clang
llvm-clanglibtooling
我正在进行一些源代码到源代码的转换。我是从铿锵源代码开始做的:铿锵/tools/extra。我要做的是添加一个printf(“helloworld\n”)在主方法的开头。它工作得很好,我以bin/addcode.././test/hello.c的身份运行我的工具,它会变成:
#include <stdio.h>
int main(){
printf("This is from main ....\n");
return 0;
}
#包括
int main(){
prin
我正在评估STM32H753上的Keil Microvision IDE
我正在做不同优化级别下ARMCC5和AC6之间的编译器比较。AC6基于叮当声
我的代码没有使用memcpy,并且我在项目设置中未选中“使用MicroLIB”,但是我的代码中的基本字节/字节复制循环被替换为带有AC6的memcpy(仅在“高”优化级别)。ARMCC5不会发生这种情况
我尝试使用编译选项来避免这种情况,如前所述:-ffreestanding和-disable simplify libcalls,在编译器和链接器
我需要阅读程序的DFG,并在clang中找到操作的ASAP调度值。我已经编写了预处理器来解析主文件并构建AST
然而,从这里开始,我不知道如何进行。有没有我可以使用的内置类?如果是,我如何使用它们来获取ASAP值?如果没有,我必须如何手动获取它们
我正在使用以下命令行执行clang:
clang -Dcl_clang_storage_class_specifiers -isystem $LIBCLC/generic/include -include clc/clc.h -target nvptx--nvidiacl -x cl some_kernel.cl -emit-llvm -S -o some_kernel.ll
结果是:
; ModuleID = 'kernel.cl'
target datalayout = "e-p:32:3
我正在尝试使用LLVM对一些程序进行静态分析。具体来说,我的目标是Linux内核源代码。然而,在将Linux内核中单个文件的源代码转换为LLVM位代码文件的第一步中,我遇到了麻烦
我使用的命令是:
clang -Iinclude/path -c -emit-llvm one_single_file_in_linux_kernel \
-o bitcode_file.bc
clang的搜索路径是正确的,但也有其他错误,例如“始终未找到内联”。我想应该有一些其他的标志我应该使用,但我不
标签: Clang
cross-compilingarchlinuxmingw-w64gnustep
几周来,我一直试图在Arch Linux机器上使用mingw-w64进行交叉编译,但我陷入了困境。我能够编译libobjc2,并设置gnustepmake。对于gnustepmake,我使用了以下configure命令:
./configure --prefix=/opt/cross/windows/gnustep --host=x86_64-w64-mingw32 CC=clang CXX=clang++ CPPFLAGS=$CLANG_WIN64_XFLAGS --enable-objc-n
我想用clang编译一个项目,但出现了如下错误
错误:[-Werror,-Wpointer bool转换]
我没有将-Wpointer bool转换设置为错误,默认情况下clang会这样做吗
如何关闭此错误,将其视为正常警告,我不想用此警告中断编译
如果我添加了-Wno指针bool转换,那么错误就消失了,还有警告,我想保留警告
有什么想法吗?谢谢-Wno error=指针布尔转换将解决我的问题我艰难地发现这是LLVM特有的,不适用于GCC。下面的资源可能很方便,任何指向更好资源的指针都是最受欢迎
我试图通过LLVM通道向程序插入printf调用。printf函数应该只是打印测试。我已经使用了getOrInsertFunction来获取printf函数。之后,我尝试使用CreateCall创建方法。不幸的是,我有一个分割错误。谁能帮我指出错误吗
//声明一些变量
静态语境;
Module*Module=F.getParent;
IRBuilder buildercall_inst;
Type*intType=Type::getInt32Tycontext;
//声明C标准库printf
s
标签: Clang
llvm-clangllvm-ir
当前是否有任何前端将生成MLIR(而不是LLVM)代码?我对解析C/C++或Java代码特别感兴趣。clang现在支持这个吗?目前没有列出任何其他的。 < P> > 2020,编译C++到 CIL/COD>(C中间语言)MLIR方言还不是公开的。但他们将“很快”提供。
这一点在今年的LLVM开发者会议()上得到了暗示,会议内容如下:
CIL:C/C++和Fortran-P.NR的通用MLIR方言;V.M;兰吉特;斯利哈里
如果人们不知道,如果您只想在mlir环境中使用C/C++代码,另一种方
我必须从LLVM生成一个中间代码,并将其作为Z3验证程序的输入。可能吗?当然可以,但胆小的人不行。有关一种可能的方法,请参阅。您好,欢迎使用SO,提供有详细文档记录的问题很重要,在本指南中,您可以找到一些关键点
我使用的是clang 2.9,它是从源代码处编译的,当我试图编译这样一个简单的代码时:
#include <iostream>
int main (){
std::cout << "Hello\n";
}
当我包含/usr/include/c++/4.5/i686 linux gnu时,我得到
/usr/bin/ld: cannot find crt1.o: No such file or directory
/usr/bin/ld: cannot find cr
我在我的项目中使用了一些开源代码和第三方lib,希望在使用扫描构建文件分析我的项目时将这些代码排除在分析之外。
我知道我们可以#ifndefclang_analyzer使用此宏来禁止对代码进行分析,但我不想将其复制粘贴到所有文件中
或
是否有任何方法使使用扫描生成命令分析后生成的报告不显示从某组文件生成的警告/错误
提前感谢。使用--排除选项(自2018年起提供)
--排除
不要对此目录中找到的文件运行静态分析器
(可以多次指定此选项)。可能在以下情况下有用
项目包含第三方库
这同样适用于扫描构
我想知道是否有为mingw32(www.mingw.org)预先构建的clang-3.4(稳定版本)二进制文件可供下载?我不想使用VS版本b/c,我只使用gcc,我不希望将来出现兼容性问题(例如VS编译的opencv共享库崩溃mingw/gcc编译的应用程序)
我查过了。他们在3.3和3.2版本中有“Mingw32/x86的实验性二进制文件”,但在新的3.4版本中没有
谢谢
标签: Clang
theoscydiacydia-substrate
约塞米蒂OSX 10.10.2
我最近安装了Theos以下指南,没有问题。但是,当我尝试编译一个简单的MS调整时,在Terminal.app中出现以下错误:
MBP:noeditnc ned$ cd /Users/ned/noeditnc
MBP:noeditnc ned$ make
Making all for tweak NoEditNC...
Preprocessing Tweak.xm...
Compiling Tweak.xm (armv7)...
xcrun: error: una
标签: Clang
address-sanitizer
你们知道为什么AddressSanitizer会使用一套完全不同的库吗
例如,当我将我的输出与string.h中的标准strcmp进行比较时,我试图重新创建strcmp,但我意识到,通常使用gcc编译它时,它会输出差异,但添加-fsanize=address标志后,它会给我1,0,-1输出
gcc和clang的行为方式相同
顺便说一句,我在OSX 10.11.6上。
这种行为是MACOS独有的还是其他系统具有类似的效果
顺便说一句,从我读到的,GNUC库的strcmp输出了差异,苹果版本只有1,
标签: Clang
llvm-clanglibtoolingclang-ast-matchers
我尝试的代码如下:
if(const ArraySubscriptExpr *array = Result.Nodes.getNodeAs<ArraySubscriptExpr>("array"))
{
llvm::outs() << array->getBase() <<'\n';
}
if(const ArraySubscriptExpr*array=Result.Nodes.getNodeAs(
LLVM中的Polly会将1d for循环识别为scop吗?若否,原因为何?当我尝试一个带有单个for循环的简单程序并运行下面的命令时,我得到了无效Scop
$ opt -basicaa -polly-ast -analyze parallel.preopt.ll -polly-process-unprofitable -polly-use-llvm-names
Printing analysis 'Polly - Create polyhedral description of Scops'
我是一个新的叮当格式
我使用./bin/clangformat-style=google-dump-config>.clangformat作为我的基本.clang格式
在此基础上,我为我的定制需求更改了一些参数
但是,在我将列限制从80更改为0(我只想根据我的个人决定断开行)后,我所有的#包括“header.h”将变为:
#include \
"header.h"
真奇怪。我已经为此挣扎了一整天了。但问题仍然存在
顺便说一下,我所有的孩子都没有这个问题
有人能给我一些线索吗 这
从终端(Mac OS X Mavericks)运行sudo pip3.4 install gdal后,我获得一条错误消息,指出未找到'col_port.h'文件,并显示以下错误:命令'/user/bin/clang/退出状态为1失败(完整消息如下)
我有gdal 1.11(从kingchaos.com下载的完整框架版本)和最新版本的Xcode命令行工具——Apple LLVM版本5.1(clang-503.0.40)(基于LLVM 3.4svn)
以下是运行sudo pip3.4 instal
没有配置文件。仅配置.am。
不知道如何处理它。Memcached用于构建源代码,正如您得到的configure.ac和Makefile.am一样,按照以下步骤构建源代码:
./autogen.sh
./configure
make
现在生成二进制文件,通过运行find*-name memcached查找位置。看起来您需要从签出运行,并确保您的生成系统已安装aclocal、autoheader、automake和autoconf。
使用clang转储objective-c文件,但它会打印所有导入的文件,以及这么多无用的信息,是否可以注销该类中定义的类或方法
命令如下所示:
clang-x objective-c-Xclang-ast dump-fsyntax only-fobjc arc main.m
LLVM的clang/clang++允许您。语法如下:
//在叮当声中,以下各项工作正常:
#pragma-clang-attribute-push(uuuu-attribute_uuuuuu((目标(“sse4.2”)),apply_u-to=函数)
void f(){}
#pragma-clang属性弹出
在本例中,函数f将在支持SSE4.2指令集的情况下编译。这将适用于属性推送和属性弹出之间的所有函数
如果我们添加一个名称空间呢
名称空间{
#pragma-clang-attribute
标签: Clang
qt-creatorobjective-c++cl
我有一个在MacOS上开发的Qt项目。我的任务是让它在Windows上编译
我目前的问题是编译器(Microsofts LLVM clang cl)似乎忽略了objective-c++文件,QtCreator在#import语句(导入类型库是Microsoft的一项未移植的功能)上发疯了。在那之后,很多东西也会让人抓狂,但我猜这是因为进口没有得到妥善处理
我相信win32 clang mvsc是唯一支持在windows上编译objective-c++文件的QtCreator编译器,但是,它似乎不
我知道clang(使用target=wasm32)和emscripten都可以将C代码编译成webassembly,但它们有什么不同
看起来他们都使用LLVM作为后端。事实上,我甚至不太明白llvm和clang之间的关系
我读WebAssembly已经有一段时间了,但我对它缺乏深入的了解。非常感谢您抽出时间 clang是基于llvm技术构建的编译器,因此您经常会听到clang和llvm可以互换使用。clang只是llvm项目的一个组成部分
emscripten是一种编译器,它使用clang来完成
我正在编写一个非常简单的LLVM过程,以简单地迭代函数中的所有指令
bool TestInstrument::runOnFunction(Function &F)
{
for (inst_iterator it = inst_begin(F), E = inst_end(F); it != E; ++it)
{
std::string str;
llvm::raw_string_ostream ss(str);
ss <
我发现了一个关于这个的旧邮件列表线程,但是,没有任何进一步的信息,文档中也没有任何内容
叮当声支持那面旗帜吗?我在一个样本上尝试了-g1、-g2、-g3和-g,但结果总是一样的,所以看起来好像不是
这是有计划的吗?目前clang没有,但没有很好的文档记录。虽然它接受您提到的选项,但它将所有选项都视为-g。从clang源代码中,llvm/tools/clang/lib/Driver/tools.cpp提供了以下代码(大约在205900版的第2825行):
从最后几行可以看出,任何尚未消除的-g选项
我有头文件header.h:
#define TEST_VALUE 1
#define TEST_STRING "hello world"
和源文件source.cpp:
#include "header.h"
#include "stdio.h"
int main() {
printf(TEST_STRING"\n");
}
我跟随并表演了:
MBA-Anton:pch asmirnov$ clang -cc1 ./header.h -emit-pch -o ./header.p
我不确定这是否属于superuser而不是stackoverflow,至少在第一部分,但对于初学者来说,如何在不更换glibc或切换到musl配置文件的情况下安装sys libs/musl(或任何其他altlibc);其次,我如何告诉clang静态链接此库(或者,再次,任何其他altlibc),而不是系统libc(sys libs/glibc)?您不能在sys libs/glibc旁边安装sys libs/musl,因为这些ebuild旨在用于系统的libc。我建议您先下载,然后使用make&&
标签: Clang
llvm-clanglibtoolingclang-ast-matchers
我试图实现一个使用ASTMatcher API进行语法分析的clang工具。我试图找出如何为clang指定额外的标志来禁用语义检查。我知道clang构建了一个包含系统头的巨大AST。在禁用会导致未知类型错误的语义检查时,是否有任何方法可以解析源代码?我只想分析给定文件源代码的语法完整性。到目前为止,我试图通过修改DSL来检查匹配的代码是否来自主文件来解决这个问题:
cxxRecordDecl(isExpansionInMainFile()).bind("class");
但这并不能阻止clan
下面是编译的LLVM位代码,其中\u ZN1BC1Ev和\u ZN1AC2Ev是类B和A的编译构造函数
%class.B = type { %class.A }
%class.A = type { i32 (...)** }
@global_obj = global i32 0, align 4
@global_ptr = global i32* @global_obj, align 8
@_ZTV1B = linkonce_odr unnamed_addr constant { [5 x i
clang-6.0、clang-6、clang-9.0.0和clang-9提供了指向LLVM编译器和匹配LLVM版本库的几个链接。我刚安装的LLVM-10不包含任何链接。是否有创建这些链接的程序或脚本
我可以为lib和include手动创建链接,希望它们能正常工作,但无法确定哪个程序是编译器
我正在使用Ubuntu18.04,在Ubuntu16.04上也需要同样的版本。如果您想知道bin目录中的哪个二进制文件是clang编译器,您需要查找clang和clang++。如果你文件clang你会发现它
1 2 3 4 5 6 ...
下一页 最后一页 共 18 页