سؤال

الحصول على خطأ رابط في 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". كان إصلاح لجعلها ثابتة. الدروس المستفادة:

  1. يضيف OSX قيادة أسماء الرموز. لم يكن حتى أخرج NM على نظام Linux ورأيت نفس الرمز دون قيادة _ التي اعتقدت أن أبحث في البحث عن "dbg_" بدلا من "_dbg_"
  2. كان OSX الحق في الشكوى
  3. مفارقة غنية أن قص وصق ماكرو تصحيح لم أفهم تماما تسبب لي الكثير من المتاعب

نصائح أخرى

قد ترغب في التحقق مما إذا كان كلا Libs #include ملف رأس يعلن _dbg_char لكن تفوت extern الكلمة الرئيسية. ربما هذا #ifdef "لقد خرجت من أجل منصات أخرى حتى تضغط فقط على هذه المشكلة على نظام التشغيل X.

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