يمكنك تجميع 32 بت أباتشي DSOs (أوراكل HTTP الخادم) على جهاز 64 بت؟

StackOverflow https://stackoverflow.com/questions/693733

سؤال

ولقد هاجر قاعدة بيانات أوراكل والخادم HTTP أوراكل تثبيت من جهاز 32 بت إلى 64 بت الجهاز - على حد سواء آلات تشغيل لينكس. قاعدة بيانات أوراكل هي 64 بت، ولكن (أباتشي) خادم HTTP هو 32 بت.

وأنا استخدم بعض غير أوراكل DSOs (mod_ntlm واحد) ولكن كلما أركض معيار "جعل تثبيت" نوع شيء أنا في نهاية المطاف مع وحدة 64 بت.

هل هناك طريقة قياسية لتجميع وحدات أباتشي 32 بت على جهاز 64 بت؟

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

المحلول

وكبديل لإجابة أندرو ميديكو، استخدم "-m32" لتجميع 32 بت و "-m64" لتجميع 64 بت على PPC أو SPARC أو إنتل الآلات - منذ كنت لا أذكر في الواقع أي هندسة رقاقة الذي تستخدمه وأن تدوين يعمل على جميع هذه.

وأنا غالبا ما تستخدم:

CC="gcc -m32" ./configure

ولضمان تجميع 32 بت (أو أكثر في كثير من الأحيان، CC="gcc -m64" لضمان 64 بت تجميع).


والسؤال: "هل CC متغير بيئة يستخدمه جعل"

والجواب: نعم، وإن كان في هذه الحالة، فمن المسلم به أيضا configure، وهو شيل الناتجة عن autoconf. تدوين كنت - وهذا هو ما يمكنني استخدام في سطر الأوامر - يحدد CC في بيئة بينما يتم تشغيل الأمر configure. الجواب أخرى توحي باستخدام:

./configure CC="gcc -m32"

وأفترض أن يعمل ويحقق الكثير من نفس التأثير. أنا لم يحاكم حتى أنا لا أعرف أنه يعمل.

إذا قمت بتشغيل ./configure --help | less، سترى المعلومات (في كثير من الأحيان مجرد المعلومات القياسية) حول كيفية استخدام البرنامج النصي. وفي النهاية، فإنه سيتم إدراج (بعض) متغيرات البيئة ذات الصلة، والتي CC واحد.

وميزة تحديد C مترجم إلى "دول مجلس التعاون الخليجي -m32" هو أن يتم تعيين العلم 32 بت في كل مرة يتم استخدام مترجم - هناك مجالا كبيرا جدا لأنه على غير ما يرام. إذا قمت بتعيين الأعلام متغير (CFLAGS، الخ)، وهناك فرصة أن بعض القيادة لن استخدامها، ومن ثم يمكن أن تسير الأمور منحرف.

وبالإضافة إلى ذلك، سوف نعود إلى السؤال، يستخدم make بالتأكيد متغير (ماكرو) دعا CC. ويمكنك ان تحدد ان على الخط جعل الأمر:

make CC="gcc -m32"

وهذا يتجاوز أي مكان في makefile. على النقيض من ذلك، وذلك باستخدام متغير بيئة، ووضع في makefile يتجاوز قيمة في البيئة، لذلك وضع CC كما متغير بيئة أقل مفيدة. وعلى الرغم من make -e يعطي الأسبقية بيئة أكثر في makefile، فإنه عادة ما يكون خيار خطير لاستخدام - يمكن أن يكون غير متوقعة من الآثار الجانبية

نصائح أخرى

./configure CFLAGS="-march=i686" 

وينبغي أن نفعل ذلك

وجنبا إلى جنب مع العلم -m32 في دول مجلس التعاون الخليجي، قد تحتاج إلى تضمين العلم -melf_i386 لدينار لربط صحيح الملفات الكائن 32BIT وإلى مكتبات 32BIT وإذا كان لديك كل من مكتبات 32bit و 64bit. سوف دينار القياسية على صناديق 64BIT لينكس الافتراضي إلى مكتبات 64bit و تحصل على خطأ التوافق عند حدوث الارتباط.

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