مساعدة مع Linker Failer: .gnu.linkonce.t
-
11-09-2019 - |
سؤال
أواجه مشكلة في ربط مكتبة مشتركة باستخدام 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
تكرارا.
تحقق من المرفقات في الروابط المقدمة التي تعرض الفرق الدقيق للإصلاح.
لقد فعلت ذلك بنفسي واختبرها وعملت بنجاح، الترقيع GCC 3.3.1
مع الإصلاح الأول "بدون مجموعة Comdat"، أعيد بناؤها واستخدامها binutils 2.15.92
و binutils 2.17.50
.