Questions tagged «clang»

有关clang LLVM编译器前端的问题。对于有关C的一般问题,请使用C标记。

30
为什么该程序被三个C ++编译器错误地拒绝?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我在编译我编写的C ++程序时遇到了一些困难。 该程序非常简单,据我所知,它符合C ++标准中列出的所有规则。我已经阅读了两次完整的ISO / IEC 14882:2003,以确保。 该程序如下: 这是尝试使用Visual C ++ 2010编译此程序时收到的输出: c:\dev>cl /nologo helloworld.png cl : Command line warning D9024 : unrecognized source file type 'helloworld.png', object file assumed helloworld.png : fatal error LNK1107: invalid or corrupt file: cannot read at 0x5172 沮丧的是,我尝试了g ++ 4.5.2,但同样没有帮助: c:\dev>g++ helloworld.png helloworld.png: …


14
lang错误:未知参数:'-mno-fused-madd'(python软件包安装失败)
psycopg2在Mavericks 10.9上尝试通过pip 安装时出现以下错误: clang: error: unknown argument: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future] 不知道如何进行,并已在此和其他地方搜索了此特定错误。任何帮助深表感谢! 这是pip的完整输出: $ pip install psycopg2 Downloading/unpacking psycopg2 Downloading psycopg2-2.5.2.tar.gz (685kB): 685kB downloaded Running setup.py (path:/private/var/folders/0z/ljjwsjmn4v9_zwm81vhxj69m0000gn/T/pip_build_tino/psycopg2/setup.py) egg_info for package psycopg2 Installing collected packages: psycopg2 Running setup.py install for psycopg2 building 'psycopg2._psycopg' extension cc -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -arch i386 -g …

9
使用CMake在GCC和Clang / LLVM之间切换
我有许多使用CMake构建的项目,我希望能够在使用GCC或Clang / LLVM进行编译之间轻松切换。我相信(如果我弄错了,请纠正我!)要使用Clang,我需要设置以下内容: SET (CMAKE_C_COMPILER "/usr/bin/clang") SET (CMAKE_C_FLAGS "-Wall -std=c99") SET (CMAKE_C_FLAGS_DEBUG "-g") SET (CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG") SET (CMAKE_C_FLAGS_RELEASE "-O4 -DNDEBUG") SET (CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g") SET (CMAKE_CXX_COMPILER "/usr/bin/clang++") SET (CMAKE_CXX_FLAGS "-Wall") SET (CMAKE_CXX_FLAGS_DEBUG "-g") SET (CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG") SET (CMAKE_CXX_FLAGS_RELEASE "-O4 -DNDEBUG") SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g") SET (CMAKE_AR "/usr/bin/llvm-ar") SET …
269 cmake  llvm  clang 

7
Clang vs GCC-产生更好的二进制文件?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 3年前关闭。 改善这个问题 我目前正在使用GCC,但最近发现了Clang,并且正在考虑切换。但是,有一个决定性因素-它生成的二进制文件的质量(速度,内存占用量,可靠性)-如果gcc -O3可以生成运行速度快1%或占用内存减少1%的二进制文件,那么这是一个决定性的因素。 与GCC相比,Clang具有更好的编译速度和更低的编译时内存占用空间,但是我对生成的编译软件的基准测试/比较非常感兴趣-您能指出我的观点还是描述您的经验?

22
Xcode-ld:-lPods找不到库
尝试构建iOS应用程序时出现这些错误。 ld: library not found for -lPods clang: error: linker command failed with exit code 1 (use -v to see invocation) Ld /Users/Markus/Library/Developer/Xcode/DerivedData/Totalbox-clpeqwpfvwuhpleeejnzlavncnvj/Build/Products/Debug-iphonesimulator/Totalbox.app/Totalbox normal x86_64 cd /Users/Markus/Development/xcode/totalbox-ios export IPHONEOS_DEPLOYMENT_TARGET=7.1 export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk -L/Users/Markus/Library/Developer/Xcode/DerivedData/Totalbox-clpeqwpfvwuhpleeejnzlavncnvj/Build/Products/Debug-iphonesimulator -F/Users/Markus/Library/Developer/Xcode/DerivedData/Totalbox-clpeqwpfvwuhpleeejnzlavncnvj/Build/Products/Debug-iphonesimulator -filelist /Users/Markus/Library/Developer/Xcode/DerivedData/Totalbox-clpeqwpfvwuhpleeejnzlavncnvj/Build/Intermediates/Totalbox.build/Debug-iphonesimulator/Totalbox.build/Objects-normal/x86_64/Totalbox.LinkFileList -Xlinker -objc_abi_version -Xlinker 2 -ObjC -framework CoreGraphics -framework Foundation -framework …

6
我的Linux开发项目使用Clang vs GCC
我正在上大学,并且对于一个正在使用C的项目,我们已经探索了GCC和Clang,并且Clang似乎比GCC更友好。结果,我想知道使用clang(相对于GCC)在Linux上用C和C ++进行开发有什么优点或缺点? 就我而言,这将用于学生级别的课程,而不是生产课程。 如果使用Clang,应该使用GDB进行调试并使用GNU Make,还是使用其他调试器和make实用程序?
175 c++  c  linux  gcc  clang 

3
ARC和桥接铸造
使用ARC,我无法再转换CGColorRef为id。我了解到我需要进行桥接。根据c文件: 一桥连投是C样式转换标注有三个关键字之一: (__bridge T) op将操作数强制转换为目标类型T。如果T 是可保留对象指针类型,则op必须具有不可保留指针类型。如果T是不可保留的指针类型,则op必须具有可保留的对象指针类型。否则,演员表的格式不正确。没有所有权转移,并且ARC不插入保留操作。 (__bridge_retained T) op将必须具有可保留对象指针类型的操作数强制转换为必须是不可保留指针类型的目标类型。ARC保留该值,但要对本地值进行通常的优化,并且接收方负责平衡+1。 (__bridge_transfer T) op将必须具有不可保留的指针类型的操作数强制转换为必须是可保留的对象指针类型的目标类型。ARC将在封闭的全表达式结束时释放该值,但要对本地值进行通常的优化。 这些转换是必需的,以便在ARC控制中进出对象。请参阅有关可保留对象指针的转换部分的基本原理。 仅使用a __bridge_retained或__bridge_transfercast来说服ARC分别发出不平衡的保留或释放是不好的形式。 我会在哪种情况下使用它们? 例如,CAGradientLayer具有一个colors接受CGColorRefs 数组的属性。我的猜测是我应该__brige在这里使用,但是不清楚为什么应该(或者不应该)。

4
在CMake中,如何测试编译器是否为Clang?
我们有一组跨平台的CMake构建脚本,并且支持使用Visual C ++和GCC进行构建。 我们正在尝试Clang,但我不知道如何使用CMake脚本测试编译器是否为Clang。 我应该测试什么以查看编译器是否为Clang?我们目前正在使用,MSVC并CMAKE_COMPILER_IS_GNU<LANG>分别测试Visual C ++和GCC。
151 c++  c  cmake  clang 

5
如何使clang编译为llvm IR
我希望clang将我的C/C++代码编译为LLVM字节码,而不是二进制可执行文件。我该如何实现?如果我得到了LLVM字节码,该如何将其进一步编译为二进制可执行文件。 基本上,我想LLVM在编译为二进制可执行文件之前将自己的代码添加到字节码中。
150 c  llvm  clang 

3
LLVM与OS X上的clang
我对OS X上的llvm,clang和gcc有疑问。 llvm-gcc 4.2,llvm 2.0和clang有什么区别?我知道它们都基于llvm构建,但是它们有何不同? 除了更快的编译速度之外,llvm与gcc相比还有什么优势?
133 c++  c  gcc  llvm  clang 

22
如何修复PCH错误?
当我尝试在中构建应用程序时Xcode,出现以下错误消息: 从与编译器((clang-425.0.27))不同的分支((clang-425.0.24))构建的PCH文件 以前没有发生,但这是更新Xcode之后的第一个构建。 其他应用程序可以运行,但不能运行此特定应用程序。 如果我关闭该"Precompile Prefix Header"设置,它将起作用。 如何解决此错误,并且仍然保持该设置不变?

1
-std = c ++ 11和-std = gnu ++ 11有什么区别?
gcc和clang -std=c++11和-std=gnu++11as作为编译参数有什么区别?与c99和有相同的问题gnu99吗?我了解C ++和C标准,这是我感兴趣的参数差异。 我在某处读到它与某些扩展有关,但是对于一个新项目,我不清楚哪个扩展以及如何在一个或另一个之间进行选择。
132 c++  gcc  c++11  clang 

13
如何制作不会被优化的无限空循环?
C11标准似乎暗示不应优化具有恒定控制表达式的迭代语句。我从这个答案中获取建议,该答案特别引用了标准草案的6.8.5节: 该实现可以假定其控制表达式不是常量表达式...的迭代语句终止。 在该答案中,它提到while(1) ;不应对循环进行优化。 那么...为什么Clang / LLVM优化了下面的循环(与编译cc -O2 -std=c11 test.c -o test)? #include <stdio.h> static void die() { while(1) ; } int main() { printf("begin\n"); die(); printf("unreachable\n"); } 在我的机器上,此打印输出begin,然后在一条非法指令(ud2位于后面的陷阱die())中崩溃。在godbolt上,我们可以看到调用之后什么也没有产生puts。 让Clang在下面输出无限循环是一件非常困难的任务-O2-虽然我可以重复测试一个volatile变量,但该变量涉及不需要的内存读取。如果我做这样的事情: #include <stdio.h> static void die() { while(1) ; } int main() { printf("begin\n"); volatile int x = 1; if(x) die(); …

3
当限制为959但不是960时,为什么优化了一个简单循环?
考虑以下简单循环: float f(float x[]) { float p = 1.0; for (int i = 0; i < 959; i++) p += 1; return p; } 如果使用gcc 7(快照)或clang(树干)进行编译,-march=core-avx2 -Ofast则会得到非常类似的结果。 .LCPI0_0: .long 1148190720 # float 960 f: # @f vmovss xmm0, dword ptr [rip + .LCPI0_0] # xmm0 = mem[0],zero,zero,zero ret 换句话说,它只是将答案设置为960而不会循环。 但是,如果将代码更改为: …
131 c  gcc  optimization  clang 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.