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

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

4
จะทราบได้อย่างไรว่าไฟล์ส่วนหัวมาจากไหน?
ฉันจะทราบได้อย่างไรว่า g ++ สามารถค้นหาไฟล์รวมได้อย่างไร โดยทั่วไปถ้าฉัน #include <foo.h> g ++ จะสแกนเส้นทางการค้นหาโดยใช้ตัวเลือกรวมใด ๆ เพื่อเพิ่มหรือแก้ไขเส้นทาง แต่ในตอนท้ายของวันมีวิธีใดบ้างที่ฉันสามารถบอกเส้นทางสัมบูรณ์ของ foo.h ที่ g ++ เลือกรวบรวมได้? เกี่ยวข้องโดยเฉพาะอย่างยิ่งหากมี foo.h มากกว่าหนึ่งรายการในเส้นทางการค้นหามากมาย สั้น ๆ วิธีที่จะทำให้สำเร็จ ... มีวิธีรับ g ++ เพื่อบอกฉันว่าเส้นทางการค้นหาสุดท้ายคืออะไรหลังจากรวมค่าเริ่มต้นและตัวเลือกทั้งหมดรวมถึง?
102 c++  c  gcc  include  g++ 

2
ฉันจะรวมเส้นทางไปยังไลบรารีใน g ++ ได้อย่างไร
ฉันพยายามรวมเส้นทางไปยังไลบรารีเพิ่มเติมใน makefile ของฉัน แต่ฉันไม่สามารถหาวิธีทำให้คอมไพเลอร์ใช้เส้นทางนั้นได้ จนถึงตอนนี้ฉันมี: g++ -g -Wall testing.cpp fileparameters.cpp main.cpp -o test และฉันต้องการรวมเส้นทางไป /data[...]/lib เนื่องจาก testing.cpp มีไฟล์จากไลบรารีนั้น นอกจากนี้ฉันใช้เครื่อง linux แก้ไข: ไม่ใช่เส้นทางไปยังห้องสมุด เฉพาะกับไฟล์ที่รวมอยู่ ความผิดฉันเอง.
96 path  g++ 

5
จะระบุความชอบของไลบรารีพา ธ ได้อย่างไร?
ฉันกำลังรวบรวมโปรแกรม c ++ โดยใช้g++และld. ฉันมี.soไลบรารีที่ฉันต้องการใช้ระหว่างการเชื่อมโยง อย่างไรก็ตามมีไลบรารีที่มีชื่อเดียวกันอยู่/usr/local/libและldกำลังเลือกไลบรารีนั้นทับไลบรารีที่ฉันระบุโดยตรง ฉันจะแก้ไขปัญหานี้ได้อย่างไร? สำหรับตัวอย่างด้านล่างไฟล์ไลบรารีของฉันคือ/my/dir/libfoo.so.0. สิ่งที่ฉันลองแล้วไม่ได้ผล: คำสั่ง g ++ ของฉันคือ g++ -g -Wall -o my_binary -L/my/dir -lfoo bar.cpp เพิ่ม/my/dirไปยังจุดเริ่มต้นหรือจุดสิ้นสุดของ$PATHตัวแปร en` ของฉัน เพิ่ม/my/dir/libfoo.so.0เป็นอาร์กิวเมนต์ให้กับ g ++
96 c++  linker  g++ 

10
ฉันจะปรับปรุงประสิทธิภาพผ่านแนวทางระดับสูงได้อย่างไรเมื่อใช้สมการแบบยาวใน C ++
ฉันกำลังพัฒนาแบบจำลองทางวิศวกรรมบางอย่าง สิ่งนี้เกี่ยวข้องกับการใช้สมการยาวบางอย่างเช่นสมการนี้เพื่อคำนวณความเค้นในวัสดุเช่นยาง: T = ( mu * ( pow(l1 * pow(l1 * l2 * l3, -0.1e1 / 0.3e1), a) * a * ( pow(l1 * l2 * l3, -0.1e1 / 0.3e1) - l1 * l2 * l3 * pow(l1 * l2 * l3, -0.4e1 / 0.3e1) / 0.3e1 ) * …


4
cc1plus: ข้อผิดพลาด: ไม่รู้จักตัวเลือกบรรทัดคำสั่ง“ -std = c ++ 11” พร้อม g ++
ฉันกำลังพยายามรวบรวมโดยใช้g++และแฟล็ก-std=c++11หรือc++0x อย่างไรก็ตามฉันได้รับข้อผิดพลาดนี้ cc1plus: error: unrecognized command line option "-std=c++11" g ++ - รุ่น g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54) Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR …

2
GNU GCC (g ++): เหตุใดจึงสร้าง dtors หลายตัว
การพัฒนาสภาพแวดล้อม: GNU GCC (g ++) 4.1.2 ในขณะที่ฉันกำลังพยายามตรวจสอบวิธีเพิ่ม 'การครอบคลุมโค้ด - โดยเฉพาะการครอบคลุมฟังก์ชัน' ในการทดสอบหน่วยฉันพบว่า dtor บางคลาสดูเหมือนจะถูกสร้างขึ้นหลายครั้ง พวกคุณบางคนมีความคิดว่าทำไมโปรด? ฉันพยายามและสังเกตสิ่งที่ฉันกล่าวถึงข้างต้นโดยใช้รหัสต่อไปนี้ ใน "test.h" class BaseClass { public: ~BaseClass(); void someMethod(); }; class DerivedClass : public BaseClass { public: virtual ~DerivedClass(); virtual void someMethod(); }; ใน "test.cpp" #include <iostream> #include "test.h" BaseClass::~BaseClass() { std::cout << "BaseClass dtor …
91 c++  g++  destructor 

6
ข้อผิดพลาด: ฟรี (): ขนาดถัดไปไม่ถูกต้อง (เร็ว):
ข้อผิดพลาดแปลก ๆ ที่ฉันได้รับคืออะไร? ฉันกำลังรวบรวม C ++ โดยใช้ g ++ บน Ubuntu 10.10 มันจะปรากฏขึ้นแบบสุ่มเมื่อฉันเรียกใช้ไฟล์ปฏิบัติการ (อาจจะ 2 ครั้งใน 8 ชั่วโมงโดยมีการคอมไพล์ 10 ครั้งต่อชั่วโมง) อย่างไรก็ตามหากฉันทำความสะอาดและคอมไพล์ใหม่มันจะหายไปเกือบตลอดเวลา *** glibc detected *** ./emailQueue.app: free(): invalid next size (fast): 0x0000000001c40270 *** ======= Backtrace: ========= /lib/libc.so.6(+0x774b6)[0x7f490d95e4b6] /lib/libc.so.6(cfree+0x73)[0x7f490d964c83] ./emailQueue.app[0x401f47] /lib/libc.so.6(__libc_start_main+0xfe)[0x7f490d905d8e] ./emailQueue.app[0x401cc9] ======= Memory map: ======== 00400000-0040d000 r-xp 00000000 08:01 1311132 …
91 c++  g++ 

4
การรวบรวมโค้ดมัลติเธรดด้วย g ++
ฉันมีรหัสที่ง่ายที่สุดที่เคยมีมา: #include <iostream> #include <thread> void worker() { std::cout << "another thread"; } int main() { std::thread t(worker); std::cout << "main thread" << std::endl; t.join(); return 0; } แม้ว่าฉันจะยังไม่สามารถรวบรวมg++เพื่อเรียกใช้ รายละเอียดเพิ่มเติม: $ g++ --version g++ (Ubuntu/Linaro 4.8.1-10ubuntu8) 4.8.1 Copyright (C) 2013 Free Software Foundation, Inc. This is free software; see the …
89 c++  linux  ubuntu  gcc  g++ 

2
gcc / g ++:“ ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว”
g++ ทำให้ฉันมีข้อผิดพลาดของแบบฟอร์ม: foo.cc:<line>:<column>: fatal error: <bar>: No such file or directory compilation terminated. จะเหมือนกันเมื่อคอมไพล์โปรแกรม C ด้วยgcc. ทำไมถึงเป็นเช่นนั้น? โปรดทราบ:คำถามนี้ถูกถามหลายครั้งก่อนหน้านี้ แต่ทุกครั้งจะเฉพาะเจาะจงสำหรับสถานการณ์ของผู้ถาม จุดประสงค์ของคำถามนี้คือการมีคำถามที่ผู้อื่นสามารถปิดเป็นรายการที่ซ้ำกันได้ทุกครั้ง คำถามที่พบบ่อย
88 c++  c  gcc  g++  c++-faq 

5
ตัวเลือกลิงค์ที่ถูกต้องในการใช้ std :: thread ใน GCC ภายใต้ linux คืออะไร?
สวัสดีฉันกำลังพยายามใช้std::threadกับ G ++ นี่คือรหัสทดสอบของฉัน #include <thread> #include <iostream> int main(int, char **){ std::thread tt([](){ std::cout<<"Thread!"<<std::endl; }); tt.join(); } มันรวบรวม แต่เมื่อฉันพยายามเรียกใช้ผลลัพธ์คือ: terminate called after throwing an instance of 'std::system_error' what(): Operation not permitted Aborted เวอร์ชันคอมไพเลอร์ของฉัน: $ g++ --version g++ (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1 Copyright (C) 2011 Free Software Foundation, Inc. This is …

2
การหลบหนีใน makefile
ฉันพยายามทำสิ่งนี้ใน makefile และมันล้มเหลวอย่างมาก: M_ARCH := $(shell g++ -dumpmachine | awk '{split($1,a,"-");print a[1]}') คุณรู้ไหมว่าทำไม? ฉันเดาว่ามันเกี่ยวข้องกับการหลบหนี แต่อะไรและที่ไหน?

1
gcc / g ++ กับ cc1 / cc1plus ต่างกันอย่างไร?
เมื่อฉันรวบรวมโครงการของฉันและตรวจสอบทรัพยากรที่ใช้โดยการทำงานtopที่ใหญ่หมู CPU / หน่วยความจำบางครั้งเรียกว่าและบางครั้งg++ cc1plusอะไรคือความแตกต่างระหว่างทั้งสองและฉันควรโทรcc1plusโดยตรงหรือไม่?
85 gcc  g++ 

1
C ++ 11 make_pair พร้อมพารามิเตอร์เทมเพลตที่ระบุจะไม่คอมไพล์
ฉันเพิ่งเล่นกับ g ++ 4.7 (หนึ่งในสแน็ปช็อตในภายหลัง) ที่เปิดใช้งาน -std = c ++ 11 ฉันพยายามรวบรวมฐานรหัสที่มีอยู่บางส่วนและมีกรณีหนึ่งที่ล้มเหลวค่อนข้างทำให้ฉันสับสน ฉันจะขอบคุณถ้ามีใครสามารถอธิบายสิ่งที่เกิดขึ้นได้ นี่คือรหัส: #include <utility> #include <iostream> #include <vector> #include <string> int main ( ) { std::string s = "abc"; // 1 ok std::pair < std::string, int > a = std::make_pair ( s, 7 ); // 2 error on …

1
เหตุใดตัวแปร extern แบบโลคอลในบล็อกที่แตกต่างกันจึงได้รับการเชื่อมโยงที่แตกต่างกันระหว่างคอมไพเลอร์ใน c ++
ในขณะที่ฉันกำลังตรวจสอบว่ามีการเชื่อมโยงใด บ้างที่อนุญาตให้ตัวแปรท้องถิ่นภายนอกฉันพบว่าพฤติกรรมที่แตกต่างระหว่างคอมไพเลอร์ เช่นถ้าฉันทดสอบโค้ดด้านล่าง ตามที่คุณเห็นในตัวแปรข้อคิดเห็นvarมีลิงค์ต่างกัน // foo.cpp int var = 10; // external linkage // main.cpp #include <iostream> static int var = 100; // internal linkage int main() { extern int var; // internal linkage std::cout << var << std::endl; { extern int var; // g++: external linkage , clang++: internal …
12 c++  g++  clang++  extern  linkage 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.