الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية التعامل مع الترجم GCC

بدأه To HigH في 24 فبراير 2011 · 8 رد · 877 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

عذراً إذا وضعت الموضوع في غير المنتدى المناسب !

باختصار إني أريد استخدام المترجم GCC لترجمة الأكواد المكتوبة بـ ++C في موقع ،

والمشكلة لا أعلم كيف أتمكن من الربط بينهم ..

قمت بتحميل gcc-4.5.1.tar.bz2

وبعد البحث وجدت معلومة مفادها أن من الصعوبة الربط المباشر بينهم لأن المترجم GCC ليس multi-threaded

وأن من الممكن أن أوجد برنامجاً أخر يستدعي ( call) المترجم GCC ، بحيث ياخذ ناتج المترجم ويرسله للموقع ..

فسؤالي :

1- كيف أنادي المترجم في البرنامج الآخر .؟

2- هل المترجم إذا قمت بمناداته داخل البرنامح أعطيه الكود كـ مُدخل، ويكون ناتج عملية الأستدعاء هو ناتج عملية التشغيل (Run) - سؤاء كان الناتج صحيحاً أو خاطئ بـ (Errors)- .؟

لأني لهذه الحظة لم أتصور شكل البرنامج بشكل كامل ، حتى أتمكن من معرفة هل يمكنني رفعه على موقع أم لا ..

وشكراً جزيلاً ..

والسلام عليكم ورحمة الله وبركاته

#2

هل تريد شئ مثل هذا؟

http://codepad.org/

1
#3

شكــراً هويدي،،

بالظبط أريد عمل كما هو موجود بالرابط ليكون جزءاً من موقع ...

#4

أعتقد أن أمامك حلان ..

الأول هو إستدعائها كعمليه (process) من داخل لغة البرمجه

أنظر:

كيف يتم إستدعاء gcc من خلال php

الثاني .. هو التعامل مع مكتبات ال GCC (من خلال APIs مخصصه لذلك .. إن وجدت)

#5

شكراً جزيلاً أستاذ هويدي على المعلومة والرابط ..

أعتقد أن الإحتمال الأول هو الأنسب ،،

وعذراً إن أمكن بأن تسمح لي ببعض الإستفسارت ..

من خلال الرابط تبين أن النظام المُستخدم كان نظام Linux ، وأمكنه من استخدام shell .. هل يمكن عمل ذلك مع أنظمة Wndows ..؟

حيث وجدت هذه الملاحظة في دليل (manual) اPHP : ا

اقتباس
I don't know how it goes in Windows, but in Linux, shell returns result with a line break at the end, I guess to make it more readable in shell, so don't forget to use trim() to encapsulate the returned result!

من خلال الإمتداد الموجود في الرابط : gcc /home/username/sourcefile.c أعتقد أن هذا هو المكان الذي يتم فيه تخزين ملف المُحتوي على الكود ..

فهل من خلال رفع مجلد gcc-4.5.1 على الموقع مباشرة واستعمال هذه الطريقة يتم عملية الإستدعاء وتنفيذ عملية معالجة للكود مباشرة ؟وأيضاً بحثت عن مجلد home تحت gcc-4.5.1 ولم أجده ..

فهل بسبب الإختلاف في إصدار gcc ؟ أم لم أتمكن من فهم هذه النقطة ..

إن كان لايوجد إلا هذا الخيار سأقوم بتحميل واستعمال نظام Linux ubuntu ، لكن لا أعلم المشكلة التي كانت سؤالاً في الرابط، هل بسبب الـ PHP أو GCC

جزاك الله خيراً أأستاذ هويدي ..

تم تعديل هذه المشاركة بواسطة To HigH في 24 فبراير 2011 في 21:34

#6

http://php.net/manual/en/function.exec.php

استخدم exec();

تحياتى


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#7
اقتباس
فهل من خلال رفع مجلد gcc-4.5.1 على الموقع مباشرة واستعمال هذه الطريقة يتم عملية الإستدعاء وتنفيذ عملية معالجة للكود مباشرة ؟وأيضاً بحثت عن مجلد home تحت gcc-4.5.1 ولم أجده ..

فهل بسبب الإختلاف في إصدار gcc ؟ أم لم أتمكن من فهم هذه النقطة ..

لا هذا ليس له علاقه بإصدار GCC ..

كل ما عليك هو عمل الأتي:

1- قراءة الشفره من ال TextArea الموجوده على ال form

2- تخزينها مؤقتا في أحد المجلدات على الخادم .. و ليكن C:/WINDOWS/tmp في ويندوز أو /tmp في لينوكس و إعطاء للملف إسم و ليكن 1.c

3- تنفيذ الأمر GCC (بإستخدام exec في PHP كما أشار محمد فتحي) و إعطاءه الملف /tmp/1.c أو C:/WINDOWS/tmp/1.c كمدخلات و قراءة المخرجات و عرضها على ال FORM ثانية..

#8

هذا مافكرت فيه بالضبط اخى هويدى

ملحوظة:

المخرجات تعود من الدالة نفسها كمصفوفة من النصوص []string

هذا من الشرح الموجود فى الرابط السابق


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#9

هويدي و محمد فتحي

شكراً جزيلاً على المعلومات ،،

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

جزاكم الله خيراً

مواضيع مشابهة