سؤال
الحصول على خطأ رابط في OSX (لا توجد أخطاء في Linux أو FBSD لنفس الرمز):
ld: duplicate symbol _dbg_char in .libs/liboekernel_la-OEK_get.o and .libs/liboekernel_la-OEK.o
2 Libs المدرجة في الخطأ هي الألغام ولكن الرمز ليس كذلك. C ++ Flint يؤكد "_dbg_char" في كلا من Libs، لكنني لست متأكدا من كيفية العثور على المكان الذي يأتي منه.
الحيل، الاستراتيجيات، إجابات صريحة لكيفية معرف _DBG_CHAR سيكون موضع تقدير كبير.
يستخدم المشروع Libtool / AutoTools و GCC 4.01
المحلول
العثور على ماكرو تسجيل / تصحيح كان يحدد DBG_CHAR بواسطة 'dbg_ ## t
". كان إصلاح لجعلها ثابتة. الدروس المستفادة:
- يضيف OSX قيادة أسماء الرموز. لم يكن حتى أخرج NM على نظام Linux ورأيت نفس الرمز دون قيادة _ التي اعتقدت أن أبحث في البحث عن "
dbg_
" بدلا من "_dbg_
" - كان OSX الحق في الشكوى
- مفارقة غنية أن قص وصق ماكرو تصحيح لم أفهم تماما تسبب لي الكثير من المتاعب
نصائح أخرى
قد ترغب في التحقق مما إذا كان كلا Libs #include
ملف رأس يعلن _dbg_char
لكن تفوت extern
الكلمة الرئيسية. ربما هذا #ifdef
"لقد خرجت من أجل منصات أخرى حتى تضغط فقط على هذه المشكلة على نظام التشغيل X.
لا تنتمي إلى StackOverflow