سؤال

لدي برنامج يرتبط بشكل ثابت بمكتبة (libA.2.0.a) وأيضا وصلات ديناميكيا إلى مكتبة أخرى (libB.so). libB.so أيضا الروابط ديناميكيا إلى إصدار أقدم من الربا (libA.1.0.so).

هل هذا التكوين ممكن؟ وإذا كان الأمر كذلك، فكيف يعرف النظام استخدام الرموز من libA.2.0.a لبرنامجي والرموز من libA.1.0.so بالنسبة libB.so?

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

المحلول

نعم، هذا التكوين ممكن.

عند الإجابة على سؤالك فيما يتعلق بكيفية معرفة النظام كيفية استخدام الرموز، تذكر أن جميع الروابط تحدث في وقت البناء. بعد أن تم بناؤه، فليس من السؤال "الرموز"، ما عليك سوى المكالمات إلى وظائف مختلفة في عناوين مختلفة.

عند بناء libb.so، فإنه يضع روابط liba.1.0.so. لا يعرف أو يهتم بأي تطبيقات أخرى تستخدمها، فهي تعرف فقط كيفية تعيين مكالمات لوظائفها الخاصة.

عند بناء التطبيق نفسه، وصلات التطبيق إلى libb.so. مهما كانت مكالمات libb.so غير معروفة تماما للتطبيق. كما أن التطبيق يرتبط أيضا بمكتبة، والتي لا تهتم libb.so.

Gotcha واحد: إذا كانت الربايا تستخدم متغيرات ثابتة، فستكون هناك مجموعة واحدة من الإحصاء يمكن الوصول إليها ل LIBB.SO، ومجموعة مختلفة مستقلة من الإحصاء يمكن الوصول إليها للتطبيق.

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