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

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


13
usr / bin / ld: ไม่พบ -l <nameOfTheLibrary>
ฉันพยายามรวบรวมโปรแกรมของฉันและมันคืนข้อผิดพลาดนี้: usr/bin/ld: cannot find -l&lt;nameOfTheLibrary&gt; ใน makefile ของฉันฉันใช้คำสั่งg++และลิงก์ไปยังไลบรารีของฉันซึ่งเป็นลิงก์สัญลักษณ์ไปยังไลบรารีของฉันซึ่งอยู่ในไดเรกทอรีอื่น มีตัวเลือกให้เพิ่มเพื่อใช้งานได้ไหม?
443 c++  linux  g++ 

5
รวบรวม C ++ 11 ด้วย g ++
ฉันพยายามอัปเดตคอมไพเลอร์ C ++ เป็น C ++ 11 ฉันค้นหาเล็กน้อยและได้ข้อสรุปว่าฉันต้องใช้ธง-std=c++0xหรือ-std=gnu++0xแต่ฉันไม่รู้อะไรเกี่ยวกับธงหลายอย่าง มีใครช่วยฉันบ้าง (ฉันใช้ Ubuntu 12.04) นี่คือข้อผิดพลาดที่ฉันได้รับจากคอมไพเลอร์เมื่อฉันพยายามใช้ไลบรารี่ซึ่งรวมอยู่ใน C ++ 11 (เช่นอาร์เรย์): #include &lt;array&gt; #include &lt;iostream&gt; int main() { std::array&lt;int, 3&gt; arr = {2, 3, 5}; ... } ไฟล์นี้ต้องการคอมไพเลอร์และการสนับสนุนไลบรารีสำหรับมาตรฐาน ISO C ++ ที่จะมาถึง C ++ 0x ขณะนี้การสนับสนุนนี้อยู่ระหว่างการทดลองและต้องเปิดใช้งานด้วยตัวเลือกคอมไพเลอร์ -std = c ++ 0x หรือ -std = …
367 c++  c++11  g++  flags 

30
การอ้างอิงที่ไม่ได้กำหนดไปยัง vtable
เมื่อสร้างโปรแกรม C ++ ฉันจะได้รับข้อความแสดงข้อผิดพลาด การอ้างอิงที่ไม่ได้กำหนดถึง 'vtable ... สาเหตุของปัญหานี้คืออะไร? ฉันจะแก้ไขได้อย่างไร มันเกิดขึ้นที่ฉันได้รับข้อผิดพลาดสำหรับโค้ดต่อไปนี้ (คลาสที่เป็นปัญหาคือ CGameModule) และฉันไม่สามารถใช้ชีวิตของฉันได้เข้าใจว่าปัญหาคืออะไร ตอนแรกฉันคิดว่ามันเกี่ยวข้องกับการลืมที่จะให้ร่างกายเสมือนการทำงาน แต่เท่าที่ฉันเข้าใจทุกอย่างอยู่ที่นี่ ห่วงโซ่การสืบทอดมีความยาวเล็กน้อย แต่นี่คือซอร์สโค้ดที่เกี่ยวข้อง ฉันไม่แน่ใจว่าข้อมูลอื่น ๆ ที่ฉันควรให้คืออะไร หมายเหตุ: คอนสตรัคเตอร์เป็นที่ที่ข้อผิดพลาดนี้เกิดขึ้นดูเหมือนว่าจะเกิดขึ้น รหัสของฉัน: class CGameModule : public CDasherModule { public: CGameModule(Dasher::CEventHandler *pEventHandler, CSettingsStore *pSettingsStore, CDasherInterfaceBase *pInterface, ModuleID_t iID, const char *szName) : CDasherModule(pEventHandler, pSettingsStore, iID, 0, szName) { g_pLogger-&gt;Log("Inside game …
357 c++  gcc  g++ 

2
C ++ unordered_map โดยใช้ประเภทคลาสที่กำหนดเองเป็นคีย์
ฉันพยายามที่จะใช้คลาสที่กำหนดเองเป็นกุญแจสำคัญสำหรับการunordered_mapเช่นต่อไปนี้: #include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;unordered_map&gt; using namespace std; class node; class Solution; class Node { public: int a; int b; int c; Node(){} Node(vector&lt;int&gt; v) { sort(v.begin(), v.end()); a = v[0]; b = v[1]; c = v[2]; } bool operator==(Node i) { if ( i.a==this-&gt;a &amp;&amp; i.b==this-&gt;b &amp;&amp;i.c==this-&gt;c …

6
ตัวประมวลผลก่อนดัมพ์ GCC กำหนด
Наэтотвопросестьответына กองมากเกินнарусском : Какузнатьсписоквсехопределённыхмакросов? มีวิธีสำหรับ gcc / g ++ เพื่อถ่ายโอนข้อมูลตัวประมวลผลล่วงหน้าที่กำหนดจากบรรทัดคำสั่งหรือไม่? ผมหมายถึงสิ่งที่ชอบ__GNUC__, __STDC__และอื่น ๆ
248 gcc  g++  c-preprocessor 

12
to_string ไม่ได้เป็นสมาชิกของ std กล่าวว่า g ++ (mingw)
ฉันกำลังทำโปรแกรมจดจำคำศัพท์ขนาดเล็กซึ่งคำต่างๆจะถูกกระพริบที่ฉันแบบสุ่มสำหรับความหมาย ฉันต้องการใช้ไลบรารี C ++ มาตรฐานเนื่องจาก Bjarne Stroustroup บอกเรา แต่ฉันพบปัญหาแปลก ๆ ที่ดูเหมือนจะเกิดขึ้นนอกประตู ฉันต้องการเปลี่ยนlongจำนวนเต็มstd::stringเพื่อให้สามารถเก็บไว้ในไฟล์ได้ ฉันมีงานทำto_string()เหมือนกัน ปัญหาคือเมื่อฉันรวบรวมมันด้วย g ++ (รุ่น 4.7.0 ตามที่ระบุไว้ใน --‍version flag) มันพูดว่า: PS C:\Users\Anurag\SkyDrive\College\Programs&gt; g++ -std=c++0x ttd.cpp ttd.cpp: In function 'int main()': ttd.cpp:11:2: error: 'to_string' is not a member of 'std' โปรแกรมของฉันที่ให้ข้อผิดพลาดนี้คือ: #include &lt;string&gt; int main() { std::to_string(0); return 0; …
245 c++  c++11  g++  mingw  tostring 

5
ระดับการปรับให้เหมาะสม -O3 เป็นอันตรายใน g ++ หรือไม่
ฉันเคยได้ยินจากแหล่งต่าง ๆ (แม้ว่าส่วนใหญ่มาจากเพื่อนร่วมงานของฉัน) การรวบรวมด้วยระดับการเพิ่มประสิทธิภาพของ-O3ใน g ++ นั้นค่อนข้างอันตรายและควรหลีกเลี่ยงโดยทั่วไปเว้นแต่จะพิสูจน์แล้วว่าจำเป็น นี่เป็นเรื่องจริงหรือไม่และถ้าเป็นเช่นนั้นทำไม ฉันควรจะติดกับ-O2?

7
คำเตือน gcc "" จะเริ่มต้นหลังจาก '
ฉันได้รับคำเตือนมากมายจากรหัสบุคคลที่สามที่ฉันไม่สามารถแก้ไขได้ มีวิธีปิดการใช้งานคำเตือนนี้หรืออย่างน้อยก็ปิดการใช้งานในบางพื้นที่ (เช่น #pragma push / pop ใน VC ++) ตัวอย่าง: list.h:1122: warning: `list&lt;LogOutput*, allocator&lt;LogOutput*&gt; &gt;::node_alloc_' will be initialized after list.h:1117: warning: `allocator&lt;LogOutput*&gt; list&lt;LogOutput*, allocator&lt;LogOutput*&gt; &gt;::alloc_'

17
g ++ การอ้างอิงที่ไม่ได้กำหนดไปยัง typeinfo
ฉันเพิ่งพบข้อผิดพลาดต่อไปนี้ (และพบวิธีแก้ปัญหาออนไลน์ แต่ไม่มีอยู่ใน Stack Overflow): (.gnu.linkonce. [stuff]): การอ้างอิงที่ไม่ได้กำหนดถึง [method] [object file] :(. gnu.linkonce. [stuff]): การอ้างอิงที่ไม่ได้กำหนดให้กับ `typeinfo สำหรับ [classname] ' เหตุใดเราจึงอาจได้รับข้อผิดพลาด "การอ้างอิงที่ไม่ได้ระบุถึงตัวเชื่อมโยง typeinfo" อย่างใดอย่างหนึ่งเหล่านี้ (คะแนนโบนัสหากคุณสามารถอธิบายสิ่งที่เกิดขึ้นเบื้องหลัง)
209 c++  linker  g++ 

7
การอ้างอิงที่ไม่ได้กำหนดสำหรับสมาชิกคลาสแบบสแตติก
ใครสามารถอธิบายได้ว่าทำไมรหัสต่อไปนี้จะไม่รวบรวม อย่างน้อยใน g ++ 4.2.4 และน่าสนใจมากขึ้นทำไมมันจะรวบรวมเมื่อฉันเลือกสมาชิกเพื่อ int? #include &lt;vector&gt; class Foo { public: static const int MEMBER = 1; }; int main(){ vector&lt;int&gt; v; v.push_back( Foo::MEMBER ); // undefined reference to `Foo::MEMBER' v.push_back( (int) Foo::MEMBER ); // OK return 0; }
201 c++  g++ 

5
วิธีสร้างมาโครแบบผันแปร (จำนวนอาร์กิวเมนต์ที่ผันแปร)
ฉันต้องการเขียนแมโครใน C ที่ยอมรับพารามิเตอร์จำนวนเท่าใดก็ได้ไม่ใช่ตัวเลขที่เฉพาะเจาะจง ตัวอย่าง: #define macro( X ) something_complicated( whatever( X ) ) โดยที่Xจำนวนพารามิเตอร์ใด ๆ ฉันต้องการสิ่งนี้เพราะwhateverโอเวอร์โหลดและสามารถเรียกได้ด้วยพารามิเตอร์ 2 หรือ 4 ฉันพยายามกำหนดมาโครสองครั้ง แต่คำจำกัดความที่สองเขียนทับอันแรก! คอมไพเลอร์ที่ฉันทำงานด้วยคือ g ++ (โดยเฉพาะเจาะจงมากขึ้น mingw)


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

8
สิ่งที่ขาดหายไปคือ“ bits / c ++ config.h” เมื่อข้ามการรวบรวมโปรแกรม 64 บิตใน 32 บิตใน Ubuntu
ฉันกำลังใช้งาน Ubuntu 32 บิตรุ่น 10.10 และพยายามคอมไพล์ข้ามไปยังเป้าหมาย 64 บิต จากการวิจัยของฉันฉันได้ติดตั้งแพ็คเกจ g ++ - multilib โปรแกรมนี้เป็นโปรแกรมสวัสดีทั่วโลก: #include &lt;iostream&gt; int main( int argc, char** argv ) { std::cout &lt;&lt; "hello world" &lt;&lt; std::endl; return 0; } รวบรวม: g++ -m64 main.cpp ข้อผิดพลาด: In file included from main.cpp:1: /usr/include/c++/4.4/iostream:39: fatal error: bits/c++config.h: No such file …

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