سؤال

ولقد تم الحصول على هذا الرمز غير محدد بناء مع سطر الأوامر هذا:

$ gcc test.cpp
Undefined symbols:
  "___gxx_personality_v0", referenced from:
  etc...

وTEST.CPP بسيط وينبغي أن يبني على ما يرام. ما هي الصفقة؟

هل كانت مفيدة؟

المحلول

استخدم

g++ test.cpp

وبدلا من ذلك، لأن هذا هو ج ++ التعليمات البرمجية.


وأو، إذا كنت <م> حقا تريد استخدام gcc، إضافة -lstdc++ إلى سطر الأوامر، كما يلي:

gcc test.cpp -lstdc++

وتشغيل md5 ضد a.out المنتجة في إطار كل سيناريو يظهر أنه من نفس المخرج.

ولكن، نعم، g++ ربما يجعل العالم الذي تعيشون فيه مكان أكثر بساطة.

نصائح أخرى

وتمديد .cpp يسبب gcc لتجميع الملف كملف C ++. (انظر في مستندات دول مجلس التعاون الخليجي ).

وحاول تجميع نفس الملف، ولكن تسميته إلى لديها ملحق .c:

mv test.cpp
gcc test.c

وبدلا من ذلك، يمكنك تحديد صراحة لغة عن طريق تمرير -x c للمترجم:

gcc -x c -c test.cpp -o test.o

إذا قمت بتشغيل nm test.o على إصدارات هذه C-اللغة، ستلاحظ لم يتم سرد أن ___gxx_personality_v0 كرمز.
(وإذا قمت بتشغيل نفس الأمر على ملف الكائن ولدت مع gcc -c test.cpp -o test.o، رمز ___gxx_personality_v0 موجودا).

وفقط في حالة أي شخص لديه نفس المشكلة لي: يجب أن يكون امتداد ملف .c ليس .C (دول مجلس التعاون الخليجي لحالة الأحرف)

وكان نفس المشكلة، ولكن حل مختلف:

وC ++ كود في مكتبة ثابتة الحصول على صلة، ويتم الرجوع إليها بواسطة ملف. م. إعادة تسمية الملف. م إلى .mm إصلاح المشكلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top