رمز غير معروف ___gxx_personality_v0 على الرابط
سؤال
ولقد تم الحصول على هذا الرمز غير محدد بناء مع سطر الأوامر هذا:
$ 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 إصلاح المشكلة.