سؤال

وأنا أتساءل ما هي قيمة ممكنة لل_la_LDFLAGS * في Makefile.am؟

إذا أنا أسأل هذا السؤال، فمن لأنني أود يلي:

Actual shared library : libA.so (or with the version number I don't care)
Symbolic links :        libA-X.Y.Z.so, libA-X.so, libA.so 
soname :                libA-X.so

ولكن هنا هو ما أحصل باستخدام -release العلم:

Actual shared library : libA-X.Y.Z.so
Symbolic links :        libA.so 
soname :                libA-X.Y.Z.so    !!! this is not what I want 

وكما أنني حاولت من دون الأعلام على الإطلاق، وحصل

Actual shared library : libA-0.0.0.so    !!! 0.0.0 and not the real version
Symbolic links :        libA.so, libA-0.so
soname :                libA-0.so        !!! 0.0.0 and not the real version

وكيف ينبغي أن أفعل؟ العلم الذي يجب أن استخدمه؟

وشكرا مقدما

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

المحلول

ويجب عليك استخدام الخيار -version-info من Libtool لتحديد إصدار واجهة المكتبة، ولكن تأكد من قراءة كيف يعمل الإصدارات (أو <وأ href = "HTTP: // شبكة الاتصالات العالمية. gnu.org/software/libtool/manual/html_node/Versioning.html#Versioning "يختلط =" نوفولو noreferrer "> هنا لدليل رسمي).

ويمكنك ان تلعب مع بالإضافة إلى -release لجعل رقم إصدار الحزمة الخاصة بك أكثر وضوحا، ولكن أشك في أنك سوف تحصل من أي وقت مضى بالضبط تسمية تريد. Libtool لديها مجموعة من القواعد لتحديد كيفية تسمية الملف وما روابط الرمزية لخلق اعتمادا على نظام: وينبغي اعتبار هذه الحقيقة عن تفاصيل تنفيذ كيف يتم تثبيت مكتبة مشتركة

نصائح أخرى

وIMHO، وتخطيط تريده هو كسر. سوف التطبيقات التي تم ربطها إلى المكتبة الخاصة بك يعتمد على libA-X.so بسبب soname. ولكن ماذا يحدث عندما libA.so هو الإصدار X + 1؟ لماذا سيكون نقطة الارتباط الرمزي libA-X.so؟

والفكرة وراء تخطيط تحصل مع العلم -release و، عندما الروابط التطبيق مع -الرياض، وسوف يؤدي إلى أن يكون مرتبط مقابل أحدث إصدار. وسوف الحين، بسبب soname، تعتمد على libA-X.Y.Z.so في وقت التشغيل. عند تثبيت نسخة جديدة من المكتبة، والتي من شأنها تثبيت libA-X.Y.Q.so جديدة، لكنه لن يترك القديم وحده - بالضبط التطبيقات كما القديمة التي تعتمد عليها توقعه. تطبيقات جديدة سوف تزال، بسبب الارتباط الرمزي يبا، وصلة على أحدث إصدار.

وقد ذهب

وسنوات من التفكير من قبل بعض الأشخاص الأذكياء جدا في مخطط الإصدارات التي تسمح تطبيقات جديدة لربط ضد أحدث نسخة من مكتبة، بينما يسمح إصدارات متعددة بالتواجد السلمي لتلبية تبعيات للتطبيقات التي تحتاج إليها. نصيحتي هي، لا ننتقد كل ذلك.

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