الخطأ دول مجلس التعاون الخليجي: خاطئة من الدرجة ELF: ELFCLASS64

StackOverflow https://stackoverflow.com/questions/216000

  •  03-07-2019
  •  | 
  •  

سؤال

وكنت أحاول ترجمة برنامج باستخدام coreset.o الكائن جمعت الخارجية. كتبت ملف اختبار public01.c ومهامي هي في computation.c، وكلاهما يجمع. لكن فشلها على ربطها معا. ماذا يمكن أن يكون مشكلة؟

gcc -o public01.x public01.o computation.o coreset.o
ld: fatal: file coreset.o: wrong ELF class: ELFCLASS64
ld: fatal: File processing errors. No output written to public01.x
collect2: ld returned 1 exit status
هل كانت مفيدة؟

المحلول

وأعتقد أن coreset.o تم تجميع 64 بت، وكنت ربطه مع computation.o 32 بت.

ويمكنك محاولة إعادة ترجمة computation.c مع العلم '-m64 "من دول مجلس التعاون الخليجي (1)

نصائح أخرى

ويمكنك تحديد "-m32 'أو' -m64" لتحديد وضع تجميع.

عند التعامل مع autoconf (تكوين) مخطوطات، وعادة ما تحدد CC = "دول مجلس التعاون الخليجي -m64" (أو CC = "دول مجلس التعاون الخليجي -m32") في بيئة بحيث يتم كل شيء مع bittiness صحيحة. على الأقل، وعادة ... الناس يجدون طرق لا نهاية لها لجعل هذا العمل، ليس تماما، ولكن لي حشوة معدل مرتفع جدا (الطريقة أكثر من 95٪) معها.

وتبين النسخة مترجم كنت تستخدم لا تتطابق مع النسخة المترجمة القيام به مع coreset.o.

وكان 32BIT احد كان البعض 64BIT. سأترك هذا الأمر في حال أي شخص آخر يعمل في مشكلة مماثلة.

ويبدو ان تم تجميع ملف الكائن على toolchain 64 بت، وكنت تستخدم toolchain 32 بت. هل حاولت اعادة تجميع ملف الكائن في وضع 32 بت؟

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