سؤال هل من الأفضل عادةً التجميع على نفس الجهاز الذي تريد تنفيذه؟


(ملاحظة: أنا فقط استخدم ffmpeg على سبيل المثال ، لقد تساءلت في كثير من الأحيان عن نفس الشيء مع البرامج الأخرى)

لدي برنامج نصي للبناء ffmpeg الذي يجمع دعما لبعض الميزات غير القياسية. الآن أريد استخدام برنامج التشفير هذا على العديد من الأجهزة الأخرى. هل هو موافق فقط لنسخ /usr/local/bin/ffmpeg أكثر قابلية للتنفيذ ، أو يجب أن تفضل تشغيل البرنامج النصي البناء على الأجهزة الأخرى؟

  • هل من المحتمل أن يكون هناك أي تحسينات تعتمد على الأجهزة في التجميع؟
  • هل من الممكن أن يكون هناك أي تبعيات خفية والتي تحتاج أيضا إلى نسخها ، بصرف النظر عن الملف التنفيذي نفسه وأي شيء يمكنني العثور عليه ldd؟

6
2017-08-26 08:17


الأصل




الأجوبة:


نعم و نعم :)

إذا كنت تريد أن يتم تشغيل برنامجك الثنائي المجمع على عدد من الأجهزة ، يجب عليك تجميعها بطريقة تتطابق مع البنية والإعداد (library-wise) على هذه الأجهزة. هذا يعني عادة:

  • ربط كل شيء يمكنك بشكل ثابت
  • شحن الليمانات احتياجاتك الثنائية
  • تعمل الاشياء 32bit على أجهزة 64bit ، ولكن ليس العكس

لذلك ، إذا كنت لا ترغب في التفكير في ما إذا كان قد يتم تشغيله أو إذا كان متعودًا: تجميع وتربط الثنائي على الجهاز الذي تريد تشغيله.


4
2017-08-26 08:33