سؤال

لدي مكتبة ثابتة ثنائية libfoo.a تم تجميعها لآلة Linux 32 بت. أرغب في تجميعه مقابل مشروع Win32 الذي تم تجميعه مع Cygwin.

هل هذا ممكن؟ يبدو أنه ممكن ، لأن جميع ملفات الكائنات في الأرشيف يجب أن تكون في المعيار ELF صيغة.

ومع ذلك ، أستمر في استلام أخطاء ربط حول الوظائف التي nm يجد في libfoo.a. عندما قمت بإنشاء كعب libfoo.a مع بعض الوظائف الفارغة مع نفس أسماء هؤلاء في libfoo.a, ، لم أستلم ربط الأخطاء حول هذه الوظائف بعد الآن.

هل هذا ممكن أم أنني أفتقد شيئًا؟ على أي حال ، كيف يمكنني استكشاف هذه المشكلة استكشاف الأخطاء وإصلاحها؟

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

المحلول

حتى إذا نجحت في الارتباط ، فلن تتجنب عدم توافق الكود المبني على منصات مختلفة. على سبيل المثال الرؤوس (GLIBC وغيرها) مختلفة هناك. لضمان التوافق ، يبدو أن الآليات الإضافية المشابهة للتشويش تستخدم على الرموز التي يتم تصديرها بواسطة ملفات الكائنات.

لقد واجهت مشكلة مشابهة لمشاركةتك عندما حاولت ربط ملفات الكائنات التي تم تجميعها ببنية معالج مختلفة - أظهرت NM أن جميع الوظائف المطلوبة موجودة ، لكن Linker لم تصدق ذلك.

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