คำถามติดแท็ก 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 …

7
ฉันจะพิมพ์รายการ“ Build Settings” ในโครงการ Xcode ได้อย่างไร
ชื่อสำรอง รายชื่อตัวแปรสร้าง Xcode พิมพ์รายการการตั้งค่า Xcode Build ตัวแปรสภาพแวดล้อมเสียงดังกราว รายการที่ยอมรับของตัวแปรสภาพแวดล้อม Xcode มีรายการตัวแปร Xcode Environment ของ Canonicalที่สามารถใช้ในBuild กฎและอื่น ๆ ได้หรือไม่?

14
ข้อผิดพลาดเสียงดังกราว: อาร์กิวเมนต์ที่ไม่รู้จัก: '-mno-fused-madd' (การติดตั้งแพ็กเกจหลามล้มเหลว)
ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อพยายามติดตั้งpsycopg2ผ่าน pip บน Mavericks 10.9: 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 …

9
สลับระหว่าง GCC และ Clang / LLVM โดยใช้ CMake
ฉันมีโครงการหลายโครงการที่สร้างโดยใช้ CMake และฉันต้องการที่จะสามารถสลับระหว่างการใช้ GCC หรือ Clang / LLVM เพื่อรวบรวมได้อย่างง่ายดาย ฉันเชื่อ (โปรดแก้ไขให้ฉันถ้าฉันเข้าใจผิด!) ที่จะใช้เสียงดังกราวฉันต้องตั้งค่าต่อไปนี้: 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 …
269 cmake  llvm  clang 

7
เสียงดังก้องกับ GCC - ซึ่งสร้างไบนารีที่ดีกว่า? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ปัจจุบันฉันใช้ GCC แต่ฉันค้นพบ Clang เมื่อเร็ว ๆ นี้และฉันกำลังไตร่ตรองการสลับ มีปัจจัยหนึ่งในการตัดสินใจว่า - คุณภาพ (ความเร็ว, หน่วยความจำรอยเท้า, ความน่าเชื่อถือ) ของไบนารีที่สร้าง - หากgcc -O3สามารถสร้างไบนารีที่ทำงานได้เร็วขึ้น 1% หรือใช้หน่วยความจำน้อยลง 1% มันเป็นดีลเลอร์ดีล Clang มีความเร็วในการคอมไพล์ที่ดีขึ้นและการปล่อยหน่วยความจำเวลาคอมไพล์ที่ต่ำกว่า GCC แต่ฉันสนใจในการวัด / เปรียบเทียบผลของซอฟต์แวร์ที่คอมไพล์แล้ว - คุณช่วยชี้ให้ฉันเห็นหรือเล่าประสบการณ์ของคุณได้ไหม?

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 …

6
Clang vs GCC สำหรับโครงการพัฒนา Linux ของฉัน
ฉันอยู่ในวิทยาลัยและสำหรับโครงการที่เราใช้ C. เราได้สำรวจ GCC และ Clang และ Clang ดูเหมือนจะเป็นมิตรต่อผู้ใช้มากกว่า GCC เป็นผลให้ฉันสงสัยว่าข้อดีหรือข้อเสียคือการใช้เสียงดังกราวเมื่อเทียบกับ GCC สำหรับการพัฒนาใน C และ C ++ บน Linux? ในกรณีของฉันนี้จะใช้สำหรับโปรแกรมระดับนักเรียนไม่ใช่การผลิต ถ้าฉันใช้ Clang ฉันควรดีบักด้วย GDB และใช้ GNU Make หรือใช้ดีบักเกอร์อื่นแล้วสร้างยูทิลิตี้?
175 c++  c  linux  gcc  clang 

3
ARC และ bridged cast
ด้วย ARC ฉันไม่สามารถเลือกใช้อีกต่อCGColorRefไปidได้ ฉันเรียนรู้ว่าฉันต้องทำนักแสดงที่เชื่อมโยง ตามเอกสารดังกราว : หล่อสะพานเป็น C- โยนสไตล์ข้อเขียนกับหนึ่งในสามคำ: (__bridge T) opTปลดเปลื้องตัวถูกดำเนินการประเภทปลายทาง หากT เป็นประเภทตัวชี้วัตถุที่คงไว้ได้นั้นopจะต้องมีประเภทตัวชี้ที่ไม่สามารถเก็บรักษาได้ ถ้าTเป็นประเภทพอยน์เตอร์ที่ไม่สามารถเก็บถาวรได้ op จะต้องมีประเภทพอยน์เตอร์ของวัตถุที่คงอยู่ได้ มิฉะนั้นนักแสดงจะหล่อขึ้นมา ไม่มีการถ่ายโอนความเป็นเจ้าของและ ARC จะไม่มีการดำเนินการเก็บรักษาไว้ (__bridge_retained T) opปลดเปลื้องตัวถูกดำเนินการซึ่งจะต้องมีประเภทตัวชี้วัตถุที่เก็บรักษาไว้กับประเภทปลายทางซึ่งจะต้องเป็นประเภทตัวชี้ที่ไม่สามารถเก็บรักษาได้ ARC จะรักษาค่าไว้โดยขึ้นอยู่กับการปรับค่าตามปกติตามปกติและผู้รับจะรับผิดชอบในการปรับสมดุล +1 นั้น (__bridge_transfer T) opปลดเปลื้องตัวถูกดำเนินการซึ่งจะต้องมีประเภทตัวชี้ที่ไม่สามารถเก็บรักษาไว้กับประเภทปลายทางซึ่งจะต้องเป็นประเภทตัวชี้วัตถุที่รักษาได้ ARC จะปล่อยค่าในตอนท้ายของนิพจน์แบบปิดล้อมซึ่งขึ้นอยู่กับการเพิ่มประสิทธิภาพตามปกติของค่าท้องถิ่น การปลดเปลื้องเหล่านี้จำเป็นต้องมีเพื่อถ่ายโอนวัตถุเข้าและออกจากการควบคุม ARC; ดูเหตุผลในส่วนการแปลงของพอยน์เตอร์พอยน์เตอร์ที่เก็บได้ การใช้__bridge_retainedหรือ__bridge_transferโยนเพื่อโน้มน้าวใจ ARC ให้ปล่อยการเก็บหรือปล่อยที่ไม่สมดุลตามลำดับเป็นรูปแบบที่ไม่ดี ในสถานการณ์แบบใดฉันจะใช้แต่ละสถานการณ์ ตัวอย่างเช่นCAGradientLayerมีcolorsคุณสมบัติที่รับอาร์เรย์ของCGColorRefs ฉันเดาว่าฉันควรใช้__brigeที่นี่ แต่ทำไมฉันควร (หรือไม่ควร) ไม่ชัดเจน

4
ใน CMake ฉันจะทดสอบได้อย่างไรว่าคอมไพเลอร์เป็นเสียงดังกราว
เรามีชุดสคริปต์สร้างข้ามแพลตฟอร์ม CMakeและเราสนับสนุนการสร้างด้วยVisual C ++และ GCC เรากำลังลองเสียงดังกราวแต่ฉันไม่สามารถหาวิธีทดสอบได้ว่า Compiler นั้นเป็น Clang กับสคริปต์ CMake ของเราหรือไม่ สิ่งที่ฉันควรทดสอบเพื่อดูว่าคอมไพเลอร์เป็นเสียงดังกราวหรือไม่? ขณะนี้เรากำลังใช้MSVCและCMAKE_COMPILER_IS_GNU<LANG>ทดสอบ Visual C ++ และ GCC ตามลำดับ
151 c++  c  cmake  clang 

5
วิธีการทำเสียงดังกราวรวบรวมเพื่อ llvm IR
ฉันต้องการเสียงดังกราวด์เพื่อรวบรวมC/C++รหัสของฉันเพื่อLLVMbytecode มากกว่าปฏิบัติการไบนารี ฉันจะบรรลุสิ่งนั้นได้อย่างไร และถ้าฉันได้รับLLVMbytecode ฉันจะนำมันไปใช้เพื่อคอมไพล์มันต่อไปยังไบนารีที่ปฏิบัติการได้ โดยทั่วไปฉันต้องการเพิ่มรหัสของตัวเองลงใน LLVM bytecode ก่อนที่จะคอมไพล์ไปยังโปรแกรมปฏิบัติการไบนารี
150 c  llvm  clang 

3
LLVM เทียบกับเสียงดังบน OS X
ฉันมีคำถามเกี่ยวกับ llvm, clang และ gcc บน OS X ความแตกต่างระหว่าง llvm-gcc 4.2, llvm 2.0 และ clang คืออะไร? ฉันรู้ว่าพวกเขาทั้งหมดสร้างขึ้นจาก llvm แต่มันแตกต่างกันอย่างไร? นอกจากคอมไพล์ได้เร็วขึ้นแล้ว llvm มีข้อดีกว่า gcc อย่างไร?
136 c++  c  gcc  llvm  clang 

22
วิธีแก้ไขข้อผิดพลาด PCH
เมื่อฉันพยายามสร้างแอปของXcodeฉันฉันได้รับข้อความแสดงข้อผิดพลาดนี้: ไฟล์ PCH ที่สร้างจากสาขาอื่น ((clang-425.0.24)) กว่าคอมไพเลอร์ ((clang-425.0.27)) ไม่เคยเกิดขึ้นมาก่อน แต่นี่เป็นการสร้างครั้งแรกหลังจากอัปเดต Xcode แอปอื่น ๆ ใช้งานได้ แต่ไม่ใช่แอปนี้โดยเฉพาะ ถ้าฉันปิดการ"Precompile Prefix Header"ตั้งค่ามันก็ใช้ได้ ฉันจะแก้ไขข้อผิดพลาดนี้ได้อย่างไรและยังคงเปิดการตั้งค่านั้นอยู่

1
อะไรคือความแตกต่างระหว่าง -std = c ++ 11 และ -std = gnu ++ 11?
อะไรคือความแตกต่างระหว่าง-std=c++11และ-std=gnu++11เป็นพารามิเตอร์การคอมไพล์สำหรับ gcc และ clang? คำถามเดียวกันกับ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()) เมื่อวันที่ godboltputsเราจะเห็นว่าไม่มีอะไรที่จะถูกสร้างขึ้นหลังจากการเรียกร้องให้ มันเป็นงานที่ยากอย่างน่าประหลาดใจที่ทำให้ Clang แสดงผลวนลูปไม่สิ้นสุดภายใต้-O2- ในขณะที่ฉันสามารถทดสอบvolatileตัวแปรซ้ำได้ซึ่งเกี่ยวข้องกับการอ่านหน่วยความจำที่ฉันไม่ต้องการ และถ้าฉันทำอะไรแบบนี้: …

3
เหตุใดการวนซ้ำแบบง่ายจึงได้รับการปรับให้เหมาะสมเมื่อขีด จำกัด คือ 959 แต่ไม่ใช่ 960
พิจารณาลูปง่ายๆนี้: float f(float x[]) { float p = 1.0; for (int i = 0; i < 959; i++) p += 1; return p; } หากคุณคอมไพล์ด้วย gcc 7 (snapshot) หรือ clang (trunk) ด้วย-march=core-avx2 -Ofastคุณจะได้สิ่งที่คล้ายกับ. .LCPI0_0: .long 1148190720 # float 960 f: # @f vmovss xmm0, dword ptr [rip + .LCPI0_0] # …
131 c  gcc  optimization  clang 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.