كيفية ترجمة ثنائي 32 بت على آلات Linux 64 بت دون لمس متغير بيئة CFLAGS

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

سؤال

الحل في

كيفية ترجمة ثنائي 32 بت على آلة Linux 64 بت مع دول مجلس التعاون الخليجي / cmake

غير ممكن لأنني استخدم برنامج الحزب الثالث والأشياء الأخرى التي تستخدم متغير CFLAGS بالفعل. والتصحيح لا يسمح بتصحيح الماكياج الخاصة بهم - يقول رئيسي.

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

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

المحلول

لا يسمح لك بتغيير CFLAGS في بيئتك، ولكن هل هناك أي سبب لا يمكنك تجاوزه مؤقتا للبناء؟

للحصول على حزمة قائمة على السيارات، سأحاول أولا:

CFLAGS="-m32" ./configure [opts]
make
make install

مكتوب جيدا configure.ac يجب أن يحترم الملف متغير CFLAGS وإلحاقه به، دون أن يطلب منك تعديل مصدر الحزمة.

تحديث

على افتراض أنك لا تستطيع إعادة تعريف متغير CC الخاص بك، إما، أود أن ألعب بعض الحيل المسار. جعل نص شل في ${HOME}/gcc32 اتصل gcc مع ما يلي (غير مختبر):

#!/bin/sh
/usr/bin/gcc -m32 "$@"

ثم قم بإعداد هذا للمسار الخاص بك عندما تريد إنشاء 32 بت:

export PATH=${HOME}/gcc32:${PATH}

تعديلات واضحة سوف تدعم g++, icc, ، أو أي مترجم آخر.

نصائح أخرى

دعنا نفترض أن دول مجلس التعاون الخليجي والأصدقاء موجودون في "/ USR / BIN". دعونا نفترض أيضا أن لديك مجلد يسمى "~ / .local / bin" الموجود في طريقك. يمكنك إنشاء برنامج نصي باش باسم "دول مجلس التعاون الخليجي" في "~ / .log / bin" مثل:

#! / بن / باش / USR / BIN / GCC -M32 $ @

يمكنك بسهولة إنشاء برنامج نصي "G ++" مع المحتوى كما يلي:

#! / بن / باش / USR / BIN / G ++ -M32 $ @

في الأساس، استمر في القيام بذلك من أجل "C ++"، "CC"، "as"، "LD"، إلخ. حسب الحاجة. جعل النصوص القابلة للتنفيذ. تأكد من أن "~ / .local / bin" موجود في متغير بيئة المسار قبل "/ USR / BIN". إذا كان هذا هو الحال، فما عند استدعاء Makefile المترجم (على افتراض أنها استخدمت المسارات النسبية)، سيتم استدعاء البرامج النصية الخاصة بك، بدلا من ذلك.

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