คำถามติดแท็ก gcc

GCC คือ GNU Compiler Collection มันเป็นคอมไพเลอร์มาตรฐานอย่างแท้จริงสำหรับ C, C ++, Go, Fortran และ Ada บน Linux และรองรับภาษาและแพลตฟอร์มอื่น ๆ อีกมากมายเช่นกัน นอกเหนือจากคอมไพเลอร์ GCC ยังมี toolchain (libc, libstdc ++, objdump, nm ฯลฯ ) ที่ใช้กันอย่างแพร่หลายในหลายแพลตฟอร์มและระบบ

7
วิธีเปิดคำเตือนทั้งหมดของ GCC (ตามตัวอักษร)?
ผมอยากจะเปิดใช้งาน - ตัวอักษร - ทั้งหมดของคำเตือนที่มี GCC (คุณคิดว่ามันจะง่าย ... ) คุณคิดว่า -Wallอาจอาจทำกลอุบาย แต่ไม่! -Wextraยังคงต้อง คุณ-Wextraอาจคิดว่าอาจทำกลอุบาย แต่ไม่! ไม่ใช่คำเตือนทั้งหมดที่ระบุไว้ที่นี่ (ตัวอย่างเช่น-Wshadow) ไม่ได้เปิดใช้งานโดยสิ่งนี้ และฉันก็ยังไม่รู้ว่ารายการนี้ครอบคลุมหรือไม่ ฉันจะบอกให้ GCC เปิดใช้งานได้ (ไม่ว่าจะเป็นหรือไม่ก็เป็นได้ แต่อย่างเดียว) ทั้งหมดคำเตือนที่มีอยู่หรือไม่

9
gcc มองหาไฟล์ส่วนหัว C และ C ++ ที่ไหน
บนระบบ Unix gcc จะค้นหาไฟล์ส่วนหัวที่ไหน? ฉันใช้เวลาเล็กน้อยในเช้านี้เพื่อค้นหาไฟล์ส่วนหัวของระบบดังนั้นฉันคิดว่านี่จะเป็นข้อมูลที่ดีที่จะมีที่นี่
186 c  gcc  header 

3
เหตุใด GCC จึงสร้างแอสเซมบลีที่ต่างกันอย่างสิ้นเชิงสำหรับรหัส C เกือบเหมือนกัน
ในขณะที่เขียนเพิ่มประสิทธิภาพftolการทำงานของผมพบว่าพฤติกรรมแปลก ๆ GCC 4.6.1บางอย่างใน ให้ฉันแสดงรหัสก่อน (เพื่อความชัดเจนฉันได้ทำเครื่องหมายความแตกต่าง): fast_trunc_one, C: int fast_trunc_one(int i) { int mantissa, exponent, sign, r; mantissa = (i & 0x07fffff) | 0x800000; exponent = 150 - ((i >> 23) & 0xff); sign = i & 0x80000000; if (exponent < 0) { r = mantissa << -exponent; /* diff …

1
ปิดใช้งานคำเตือน gcc ทั้งหมด
ฉันกำลังทำงานในโครงการที่จะอ่านข้อความแสดงข้อผิดพลาดของคอมไพเลอร์หลากหลายและทำสิ่งที่มีประโยชน์กับพวกเขา ตัวอย่างโค้ดเบสที่ฉันกำลังทดสอบนี้ (แอปพลิเคชันแบบสุ่มโอเพนซอร์ซ) และการสร้างใหม่บ่อยครั้งประกอบด้วยบิตบางส่วนที่สร้างคำเตือนซึ่งไม่น่าสนใจสำหรับฉัน ฉันจะปิดการเตือนทั้งหมดจาก GCC ดังนั้นฉันสามารถเห็นข้อความแสดงข้อผิดพลาดหากมี?
184 gcc  g++  warnings 

2
ใช้งานจริงของคำหลัก 'จำกัด ' C99?
ฉันกำลังอ่านเอกสารและคำถาม / คำตอบและเห็นมันกล่าวถึง ฉันอ่านคำอธิบายสั้น ๆ โดยระบุว่าโดยทั่วไปแล้วมันจะเป็นสัญญาจากโปรแกรมเมอร์ว่าจะไม่ใช้ตัวชี้ชี้ไปที่อื่น มีใครบ้างที่สามารถเสนอกรณีที่เป็นจริงได้ซึ่งคุ้มค่ากับการใช้งานจริงหรือไม่?
183 c  gcc  c99  restrict-qualifier 

5
วิธีการสร้างสัญลักษณ์การแก้ปัญหา gcc นอกเป้าหมายการสร้าง?
ฉันรู้ว่าฉันสามารถสร้างสัญลักษณ์การแก้ปัญหาโดยใช้ตัวเลือก -g อย่างไรก็ตามสัญลักษณ์จะถูกฝังในไฟล์เป้าหมาย gcc สามารถสร้างสัญลักษณ์การดีบักนอกผลการทำงาน / ไลบรารีหรือไม่ เช่นเดียวกับไฟล์. pdb ของคอมไพเลอร์ windows VC ++
176 gcc  debugging  pdb-files 

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

8
errno เป็นเธรดที่ปลอดภัยหรือไม่
ในerrno.hตัวแปรนี้มีการประกาศตามextern int errno;คำถามของฉันคือมันปลอดภัยที่จะตรวจสอบerrnoค่าหลังจากการโทรหรือใช้ perror () ในรหัสแบบมัลติเธรด นี่เป็นตัวแปรที่ปลอดภัยหรือไม่ ถ้าไม่เช่นนั้นทางเลือกคืออะไร? ฉันใช้ linux กับ gcc บนสถาปัตยกรรม x86
175 c  linux  multithreading  gcc 

11
“ / usr / bin / ld: ไม่พบ -lz”
ฉันพยายามรวบรวมซอร์สโค้ด Android ภายใต้ Ubuntu 10.04 ฉันพบข้อผิดพลาด / usr / bin / ld: ไม่พบ -lz คุณช่วยบอกฉันทีว่าฉันจะแก้ไขได้อย่างไร อะไรcannot find -lzหมายถึง? นี่คือข้อความแสดงข้อผิดพลาด: external/qemu/Makefile.android:1101: warning: overriding commands for target `external/qemu/android/avd/hw-config-defs.h' external/qemu/Makefile.android:933: warning: ignoring old commands for target `external/qemu/android/avd/hw-config-defs.h' host SharedLib: libneo_cgi (out/host/linux-x86/obj/lib/libneo_cgi.so) /usr/bin/ld: skipping incompatible /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../libz.so when searching for -lz /usr/bin/ld: skipping incompatible /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../libz.a …
172 linux  gcc  linker 

4
กระโดดแพงด้วย GCC 5.4.0
ฉันมีฟังก์ชั่นที่มีลักษณะเช่นนี้ (แสดงเฉพาะส่วนที่สำคัญ): double CompareShifted(const std::vector<uint16_t>& l, const std::vector<uint16_t> &curr, int shift, int shiftY) { ... for(std::size_t i=std::max(0,-shift);i<max;i++) { if ((curr[i] < 479) && (l[i + shift] < 479)) { nontopOverlap++; } ... } ... } เขียนแบบนี้ฟังก์ชั่นนี้ใช้เวลาประมาณ 34ms บนเครื่องของฉัน หลังจากเปลี่ยนเงื่อนไขเป็นการคูณแบบบูล (ทำให้โค้ดมีลักษณะดังนี้): double CompareShifted(const std::vector<uint16_t>& l, const std::vector<uint16_t> &curr, int shift, int …
171 c++  gcc 

11
ไลบรารี glibc หลายอันบนโฮสต์เดียว
ไลบรารี glibc หลายอันบนโฮสต์เดียว เซิร์ฟเวอร์ linux (SLES-8) ของฉันในปัจจุบันมี glibc-2.2.5-235 แต่ฉันมีโปรแกรมที่จะไม่ทำงานในเวอร์ชันนี้และต้องใช้ glibc-2.3.3 เป็นไปได้หรือไม่ที่จะติดตั้ง glibcs ​​หลายอันบนโฮสต์เดียวกัน นี่เป็นข้อผิดพลาดที่ฉันได้รับเมื่อฉันรันโปรแกรมบน glibc เก่า: ./myapp: /lib/i686/libc.so.6: version `GLIBC_2.3' not found (required by ./myapp) ./myapp: /lib/i686/libpthread.so.0: version `GLIBC_2.3.2' not found (required by ./myapp) ./myapp: /lib/i686/libc.so.6: version `GLIBC_2.3' not found (required by ./libxerces-c.so.27) ./myapp: /lib/ld-linux.so.2: version `GLIBC_2.3' not found (required …
171 linux  gcc  glibc 

11
ข้อผิดพลาด“ gnu / stubs-32.h: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว” ในขณะที่คอมไพล์ซอร์สโค้ด Nachos
ฉันกำลังพยายามติดตั้ง Nachos บนแล็ปท็อปของฉันและฉันมี Ubuntu 11.04 บนแล็ปท็อป รหัสอยู่ใน C และเพื่อสร้างฉันคิดว่าฉันจะต้องรวบรวมข้าม นี่คือที่ปัญหาของฉันคือ ฉันดาวน์โหลดซอร์สโค้ดของ MIPS cross compiler โดยใช้คำสั่ง wget http://mll.csie.ntu.edu.tw/course/os_f08/assignment/mips-decstation.linux-xgcc.gz และฉันคลายซิปโดยใช้ tar zxvf mips-decstation.linux-xgcc.gz ไม่เป็นไร แต่เมื่อฉันพยายามสร้างซอร์สโค้ดของ nachos os โดยใช้ make ฉันได้รับข้อผิดพลาดนี้ - /usr/include/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory compilation terminated. make: *** [bitmap.o] Error 1 ฉันพยายามทำตามคำแนะนำที่ระบุไว้ที่นี่ - http://mll.csie.ntu.edu.tw/course/os_f08/217.htmและทุกอย่างทำงานได้ดียกเว้นเมื่อฉันพยายามใช้งาน

7
ld ไม่พบห้องสมุดที่มีอยู่
ฉันกำลังพยายามเชื่อมโยงแอปพลิเคชันกับ g ++ บนระบบ Debian lenny นี้ ld กำลังบ่นว่าไม่พบไลบรารีที่ระบุ ตัวอย่างเฉพาะที่นี่คือ ImageMagick แต่ฉันมีปัญหาที่คล้ายกันกับห้องสมุดอื่น ๆ น้อยเกินไป ฉันกำลังเรียกลิงเกอร์ด้วย: g++ -w (..lots of .o files/include directories/etc..) \ -L/usr/lib -lmagic ld บ่น: /usr/bin/ld: cannot find -lmagic อย่างไรก็ตาม libmagic มีอยู่: $ locate libmagic.so /usr/lib/libmagic.so.1 /usr/lib/libmagic.so.1.0.0 $ ls -all /usr/lib/libmagic.so.1* lrwxrwxrwx 1 root root 17 2008-12-01 03:52 …

5
วิธีการดูว่าธง --march = พื้นเมืองจะเปิดใช้งาน?
ฉันกำลังรวบรวมแอป C ++ ของฉันโดยใช้ GCC 4.3 แทนที่จะเลือกการตั้งค่าสถานะการปรับแต่งที่ฉันใช้ด้วยตนเอง-march=nativeซึ่งในทางทฤษฎีแล้วควรเพิ่มการตั้งค่าสถานะการปรับให้เหมาะสมทั้งหมดที่ใช้กับฮาร์ดแวร์ที่ฉันกำลังรวบรวม แต่ฉันจะตรวจสอบการตั้งค่าสถานะที่ใช้งานจริงได้อย่างไร

4
คำเตือน: การประกาศโดยนัยที่เข้ากันไม่ได้ของฟังก์ชันในตัว 'xyz'
ฉันได้รับคำเตือนจำนวนหนึ่งเมื่อรวบรวมไบนารีสองสาม: warning: incompatible implicit declaration of built-in function ‘strcpy’ warning: incompatible implicit declaration of built-in function ‘strlen’ warning: incompatible implicit declaration of built-in function ‘exit’ เพื่อพยายามแก้ไขปัญหานี้ฉันได้เพิ่ม #include <stdlib.h> ที่ด้านบนของไฟล์ C ที่เกี่ยวข้องกับคำเตือนนี้นอกเหนือจากการรวบรวมด้วยแฟล็กต่อไปนี้: CFLAGS = -fno-builtin-exit -fno-builtin-strcat -fno-builtin-strncat -fno-builtin-strcpy -fno-builtin-strlen -fno-builtin-calloc ฉันใช้ GCC 4.1.2: $ gcc --version gcc (GCC) 4.1.2 20080704 ฉันควรทำอย่างไรเพื่อแก้ไขคำเตือนเหล่านี้
164 c  gcc  gcc-warning 

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