سؤال

كيف يمكنني إجبار Automake على إنشاء مكتبة مشتركة قياسية ، بدلاً من واحدة من الجهاز؟ عادة ، سأقوم بإنشاء abc.so الذي يشار إليه بمسار كامل وتحميله في البرنامج الرئيسي. هل هناك طريقة لإجبار أنا على فعل الشيء نفسه؟ إذا قمت بإدراجها على أنها _library ، فإن Automake تشكو: 'abc.so' is not a standard library name; did you mean 'libabc.a'

فقط للتوضيح: نعم ، أنا فقط بحاجة .so الدعم - لا إحصائيات. ونعم ، أريد اسم ملف مخصص.

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

المحلول

لا تعرف Automake كيفية إنشاء مكتبة مشتركة لأنه لا توجد طريقة محمولة للقيام بذلك. إذا كنت تريد مكتبة مشتركة مع Automake ، فيجب عليك استخدام Automake+Libtool. لاحظ أنه يمكنك بسهولة تكوين libtool حتى لا تبني أي مكتبة ثابتة (مع LT_INIT([disable-static]) في الخاص بك configure.ac) بشكل افتراضي.

نصائح أخرى

libtool هو الطريق للذهاب. إذا كنت تريد اسمًا مخصصًا ، أضف ملف -module خيار _ldflags ، على سبيل المثال:

plugindir= /some/where  
plugin_LTLIBRARIES= abc.la
abc_la_LDFLAGS= -module

مكتبة libtoolyized هي غلاف حول مكتبات قياسية واحدة أو أكثر. يمكنك العثور على هذه المكتبات في ".libs" بعد تشغيل "Make" ، أو في "$ prefix/lib" بعد تشغيل "make install".

على جهاز Linux ، يجب أن تجد في النهاية ملفًا يسمى "Libabc.so".

IIRC ، لا يوجد شيء خاص حول المكتبات التي تم إنشاؤها بمساعدة Libtool ، إلا إذا قمت بالربط مع Libltdl. إذا كنت لا ترغب في استخدام libtool ، فلديك القدرة على الاختيار وعدم الاهتمام بالكثير من قابلية النقل ، فأنت حر في استخدام Automake بدون libtool. أوصي باستخدام قوة libtool بدلاً من ذلك.

في الواقع ، أنا لا أعرف حتى ما هو _library جيد ، لم أجدها في قسم الدليل/الارتباط.

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