(前言:我对C / C ++来说很新,而且我不太清楚在本地代码中的debugging是如何工作的。) 有些消息来源说,gdb和lldb可以debugging任何编译成机器码的程序 。 其他人说,要用gdb进行debugging,你必须在gcc 中用-g标志进行编译。 gcc的文档本身表明这是可选的,实际上,如果使用它,它可能会导致gdb 以外的其他debugging器出现问题。 铿锵也有一个-g标志,文档基本上只是说“生成debugging信息”。 那么这些debugging器限制在自己的工具链(GNU和LLVM)中,还是在某种程度上独立于所使用的编译器?
有没有针对LLVM的语言: 是静态types的 使用types推断 是function(即lambdaexpression式,闭包,列表原语,列表parsing等) 拥有一stream的面向对象特性(inheritance,多态,mixins等) 有一个复杂的types系统(generics,协方差和逆变等) 所有这些都是Scala,但只针对JVM。 F#(在某种程度上C#)是最重要的,如果不是所有这些,但只针对.NET。 什么类似的语言针对LLVM?
我试图确定是否build立和使用linux下的llvm项目的libcxxabi是有道理的。 我的libcxxabi链接到 ldd libc++abi.so.1.0 linux-vdso.so.1 => (0x00007fff2e0db000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fd658f0d000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fd658d05000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd65893c000) libc++.so.1 => /path/where/clang/is // edited /lib64/ld-linux-x86-64.so.2 (0x00007fd6593ab000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd658465000) 所以它使用gcc_s库,GNU librt,唯一真正的区别是它使用libc++不是libstdc++ ,但是这真的有多好? 鉴于abi图书馆的关键作用,我应该在这样的平台下去找libcxxabi ? 我的问题不是如何build立这个,或者如果这能够工作,但如果这是一个好主意C ++明智 ,我可能得到什么样的好处,或者如果你已经使用这个好处,你会得到什么样的好处。
我有LLVM IR表单中的所有依赖关系和库。 如何交叉编译我的库,从Linux(例如Ubuntu)的iOS,Android,Windows和Mac平台的共享对象? 请提供一个示例脚本,它将编译任何示例库,并至less依赖于您select的另一个库到所有4个平台(例如OpenCV或ZeroMQ 4+)。
本周新Xcode 3.2.1自带的自述文件说明如下: 静态代码分析通过Build菜单下的Build and Analyze选项或通过自定义构build设置完全集成在Xcode IDE中 GCC 4.2是10.6 SDK的默认系统编译器 包括使用两个不同前端的可选LLVM编译器 – Clang编译器是一个先进的parsing器,可显着提高编译时间。 为了获得最大的兼容性,GCC LLVM编译器利用LLVM后端和GCC 4.2分析器。 新的可选Clang-LLVM 1.0编译器使用快速Clang前端parsing器和LLVM后端编译器,以实现快速编译和快速可执行代码。 尽pipeGCC 4.2仍然是系统默认的,但许多项目都将受益于这种编译器组合。 当Clang-LLVM 1.0编译器遇到C ++代码时,将回退到使用LLVM-GCC 4.2。 我们公司现有的项目是纯C,Objective-C和用于桌面和iPhone的Objective-C ++。 有人可以总结LLVM,GCC,CLANG,CLANG-LLVM,WordFoo等的差异。 人。 并解释他们是什么,什么时候我们应该使用每个和什么? 这将是很好的链接到更详细的解释,但我真的只是在寻找一个高层次的概述。
我有一个类暴露了一些方法,其实现是由一个内部对象提供的。 我正在使用forward调用来在运行时调度内部对象的方法调用,但XCode抱怨,因为它找不到声明的方法的实现。 我发现了其他一些类似的问题,但所有这些问题都是通过devise更改来解决的。 我并不是要在这里讨论这个devise,但是如果有人对此有所build议的话,我对Code Review有一个公开的问题 ,比较适合这种讨论。 我的问题是这里是否存在closuresXCode中的Incomplete Implementation警告的方法。
从我读过的,有一个llvm程序将java字节码转换为llvm的中间forms,叫做class2llvm。 我的问题是,我如何访问这个。 为了访问这个,我需要安装哪些前端。 VMkit是他们的JVM的实现,但我正在寻找如何编译与llvm Java源代码,而不是如何运行它。
是否有可能在Eclipse CDT中使用Clang / LLVM ,如果是这样,它是如何configuration实际使其工作?
我有一个针对LLVM的编译器,我提供了两种运行代码的方法: 自动运行。 该模式将代码编译为LLVM,并使用ExecutionEngine JIT将其编译为机器代码并运行,而不会生成输出文件。 编译并单独运行。 这个模式输出一个LLVM .bc文件,我手动优化(用opt ),编译成本地程序集(用llc )编译成机器代码和链接(用gcc ),然后运行。 我期待的方法#2比方法#1更快,或者至less是相同的速度,但是运行一些速度testing,我惊讶地发现#2的速度一直是大约两倍的速度。 这是一个巨大的速度差异。 这两种情况都运行相同的LLVM源代码。 有了方法#1,我还没有想过运行任何LLVM优化过程(这就是为什么我期望它会变慢)。 使用方法#2,我正在使用-O3运行-std-compile-opts和llc ,以便最大化优化,但是它并没有在#1附近。 下面是同一个程序的一个例子: #1没有优化:11.833s #2没有优化:22.262s #2优化( -std-compile-opts和-O3 ):18.823s ExecutionEngine是否做了一些我不知道的特殊事情? 有什么办法可以优化编译后的代码,以达到与ExecutionEngine JIT相同的性能?
有没有人有LLVM , llvm-gcc或Clang的经验 ? llvm背后的整个想法对我来说似乎非常有趣,而且我很感兴趣看到它的performance。 如果这些工具还没有准备好生产,我只是不想把很多时间花在试用这些工具上。 如果你有这些工具的经验,你觉得他们怎么样? 你遇到什么主要的限制? 什么是最大的好处? 非常感谢!