سؤال

أواجه مشكلة في ربط مكتبة مشتركة باستخدام GCC 3.2.3 مع Binutils 2.18. عندما أحاول ربط المكتبة، احصل على الخطأ التالي:

.gnu.linkonce.t _... المشار إليها في القسم. Rodata: محددة في القسم المهملة .gnu.linkonce.t ...

لقد فعلت قدرا عاديا من Googling حول هذا الأمر، ويبدو أن معظم الأماكن تشير إلى أنها انحدار مقدما في Binutils 2.17 ثم ثابتا في 2.18.50، لكنني كنت فضوليا إذا كان أي شخص يعرف ما إذا كان هناك أي حلول معينة للقضية دون الاضطرار إلى لمس Binutils و GCC.

شكرا.

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

المحلول

تحول هذا إلى أن يكون نتيجة غريبة حيث كان النظام لا يتواصل مع دول مجلس التعاون الخليجي مع Binutils مختلفة. / USR / BIN / GCC تستخدم (3.2.3) و / USR / Local / Bin / LD تستخدم معها بسبب / USR / المحلي / بن يجري أمام / USR / BIN في الطريق. عندما تحولنا إلى ذلك / USR / BIN كان في مقدمة المسار، تم استدعاء المناسبة / USR / BIN / LD (Binutils 2.14) ويبدو أن هذا قد حل المشكلة.

نصائح أخرى

تم العثور على هذا الخطأ وتم الإبلاغ عنه هنا GCC بوجزيليلا, ، تم تقديم اختبار صغير يركز على الخطأ في التعليقات التي وجدت أنها مفيدة حقا لا تضيع الوقت. تم إصلاح هذا الخطأ GCC 3.4.6.

لقد تلقيت هذه المشكلة أثناء استخدامها GCC 3.3.1 مع binutils 2.15.92 و binutils 2.17.50 وكلاهما لم ينجح. لذلك، بالنسبة لي بوضوح لم يكن مزيج GCC و binutils الإصدارات التي جعلت المشكلة.

إذا كان يجب عليك استخدام كبار السن GCC الإصدار الذي قد تستخدمه هذا التصحيح المقدمة من قبل H.J. والقيام بذلك يدويا ثم إعادة بناء القديم GCC تكرارا.

إصلاح دون مجموعة comdat

إصلاح مع مجموعة comdat

تحقق من المرفقات في الروابط المقدمة التي تعرض الفرق الدقيق للإصلاح.

لقد فعلت ذلك بنفسي واختبرها وعملت بنجاح، الترقيع GCC 3.3.1 مع الإصلاح الأول "بدون مجموعة Comdat"، أعيد بناؤها واستخدامها binutils 2.15.92 و binutils 2.17.50.

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