سؤال

هل من الممكن استخدام مشاركة ملفات الكائن في المحمولة مثل Dll في ويندوز??

أنا أتساءل عما إذا كان هناك طريقة أنا يمكن أن توفر مكتبة المترجمة, جاهزة للاستخدام, لينكس.بنفس الطريقة يمكنك تجميع DLL في ويندوز ويمكن استخدامه على أي نظام ويندوز (موافق ، وليس أي شيء آخر ، ولكن في معظم منهم أنه يمكن).

هل هذا ممكن في لينكس ؟

تحرير:
لقد استيقظت للتو و قراءة الإجابات.هناك بعض منها جيدة جدا.
أنا لا أحاول إخفاء التعليمات البرمجية المصدر.أريد فقط أن توفر بالفعل مترجمة و جاهزة للاستخدام المكتبة بحيث يمكن للمستخدمين مع عدم وجود الخبرة في تجميع لا تحتاج إلى القيام بذلك بأنفسهم.
ومن هنا جاءت فكرة هو توفير .ذلك الملف الذي يعمل على العديد من مختلف Linuxes ممكن.
المكتبة هو مكتوب في C + + باستخدام المحكمة الدولية الخاصة بلبنان وتعزيز المكتبات.

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

المحلول

أنا عالية عالية نوصي باستخدام LSB التطبيق / مكتبة المدقق.ه يذهب أن أقول لكم ما إذا كنت:

  • استخدام الملحقات التي لا تتوفر على بعض التوزيعات
  • أعرض باش المذهبين في تثبيت البرامج النصية
  • استخدام syscalls التي لا تتوفر في جميع حبات الأخيرة
  • تعتمد على معيار عدم المكتبات (وسوف اقول لكم ما توزيعات قلة منهم)
  • والكثير عند الكثير من أخرى جيدة جدا الشيكات

يمكنك الحصول على مزيد من المعلومات هنا وكذلك تحميل الأداة.من السهل تشغيل ..فقط أما الآن ، فإن ذلك تشغيل البرنامج النصي perl و نقطة المتصفح في localhost ..والباقي هو متصفح مدفوعة.

باستخدام أداة, يمكنك بسهولة الحصول على المكتبة الخاصة بك / التطبيق LSB معتمدة (لكلا الإصدارين) وجعل توزيعة الرابط المهمة أسهل بكثير.

أبعد من ذلك, مجرد استخدام شيء مثل libtool (أو ما شابه) للتأكد من المكتبة الخاصة بك يتم تثبيت بشكل صحيح ، وتوفير كائن ثابت بالنسبة للأشخاص الذين لا ترغب في ربط ضد DSO (سوف يستغرق الوقت المكتبة الخاصة بك لتظهر في معظم التوزيعات حتى كتابة برنامج محمول لا يمكنني الاعتماد على كونها موجودة) والتعليق العام الخاص بك واجهة جيدا.

المكتبات, أجد أن Doxygen يعمل أفضل.التوثيق مهم جدا ، وهذا بالتأكيد يؤثر خياري من مكتبة لاستخدامها في أي مهمة معينة.

حقا, مرة أخرى, تحقق من التطبيق المدقق ، سوف تعطيك قابلية المشكلة التقارير التي سوف يستغرق سنة من وجود المكتبة في البرية للحصول على خلاف ذلك.

أخيرا ، في محاولة لجعل المكتبة الخاصة بك من السهل أن تسقط في شجرة' لذا لا يجب أن ثابت الرابط ضدها.كما قلت, قد يستغرق الأمر بضع سنوات قبل أن تصبح شائعة في معظم التوزيعات.من الاسهل بكثير بالنسبة لي أن مجرد الاستيلاء على التعليمات البرمجية الخاصة بك ، وأسقطه في src/lib واستخدامها ، حتى إذا كانت المكتبة الخاصة بك هو شائع.و رجاء ..أعطني وحدة الاختبارات ، اضغط (اختبار أي شيء البروتوكول) هو جيد و المحمولة طريقة للقيام بذلك.إذا كنت هاك المكتبة الخاصة بك, أريد أن أعرف (بسرعة) إذا كسرت ، خاصة عند تعديل في شجرة أو ar الموقع (إذا DSO موجود).

نصائح أخرى

إذا كنت ترغب في مساعدة المستخدمين بإعطائهم التعليمات البرمجية المترجمة, افضل طريقة هو أن نعطيهم مرتبطة بشكل ثابت ثنائي + الوثائق كيف يمكن تشغيل الثنائية.(ربما هذا بالإضافة إلى إعطاء التعليمات البرمجية المصدر لهم.) معظم مرتبطة بشكل ثابت الثنائيات تعمل على معظم توزيعات لينكس من نفس العمارة (+ 32 بت (x86) مرتبطة بشكل ثابت الثنائيات تعمل على 64 بت (amd64)).فلا عجب سكايب يوفر مرتبطة بشكل ثابت لينكس تحميل.

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

يرجى أيضا ملاحظة أنه من السهل جدا أن يخل المستخدمين من خلال توفير مكتبة في .ذلك النموذج الذي لا يعمل على النظام الخاص بهم.(و أنت لا تملك قوة عظمى تجعل من العمل على كل أنظمة لينكس ، لذلك هذا الوضع أمر لا مفر منه.) هل توفر 32-بت و 64-بت ، بما في ذلك x86, باور, الذراع وما إلى ذلك ؟ إذا كان .حتى الملف يعمل فقط على Debian, Ubuntu و القبعة الحمراء (لأنك لم يكن لديك الوقت الوقت إلى ميناء الملف إلى أكثر التوزيعات), سوف الأرجح مفاجأة الخاص بك SUSE و جنتو المستخدمين (وأكثر).

من الناحية المثالية, سوف تحتاج إلى استخدام جنو autoconf, automake, ، libtool لإنشاء تكوين و جعل النصوص ، ثم توزيع مكتبة المصدر مع إنشاء وتكوين Makefile.في الملفات.

هنا الكتاب على الانترنت عنهم.

./configure; make; make install هو المعيار إلى حد ما في لينكس.

جذر المشكلة هو أن لينكس يعمل على العديد من معالجات مختلفة.لا يمكنك الاعتماد فقط على المعالج دعم تعليمات x86 مثل ويندوز لا (بالنسبة لمعظم إصدارات:Itanium (XP والإصدارات الأحدث) ألفا و (NT 4.0) هي الاستثناءات).

لذا السؤال هو كيفية تطوير المكتبات المشتركة على لينكس ؟ هل يمكن أن نلقي نظرة على هذا البرنامج التعليمي أو على Pogram مكتبة Howto.

أنا أعرف ما كنت طالبا.ويندوز, MSFT بعناية جعلت DLLs كل متوافق لذا DLLs الخاصة بك وعادة ما تكون متوافقة مع تقريبا كل نسخة من Windows, هذا هو السبب في تسميه "المحمولة".

للأسف, في لينكس هناك العديد من الاختلافات (الجميع يفكر في ان تكون "مختلف" لكسب المال) حتى أن كنت لا يمكن الحصول على نفس المزايا ويندوز, وهذا هو السبب لدينا الكثير من الحزم بنفس تجميع لمختلف التوزيعات توزيعة النسخة, نوع المعالج, ...

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

عادة يمكنك فقط بناء بعض ثنائي متوافق مع بعض التوزيع (أو عدة توزيعات إذا كنت محظوظا).هذا هو السبب في الإفراج عن لينكس البرامج في الثنائية دائما ثمل ، ما لم تلتزم بعض توزيعة مثل Ubuntu, Debian, أو ره.

مجرد وضع .حتى الملف في /usr/lib قد العمل, ولكن هل من المحتمل أن تصل الفوضى المخطط أن توزيعة وقد لإدارة المكتبات.

نلقي نظرة على لينكس مستوى القاعدة - التي هي أقرب شيء سوف تجد منصة مشتركة بين توزيعات لينكس.

http://www.linuxfoundation.org/collaborate/workgroups/lsb

ما الذي تحاول تحقيقه ؟

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

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