كيفية معرفة المترجم الذي تم استخدامه:g77 أو gfortran

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

  •  08-07-2019
  •  | 
  •  

سؤال

أقوم بتجميع مكتبة لمشروع خاص يعتمد على عدد من المكتبات.على وجه التحديد، يتم تجميع إحدى التبعيات باستخدام Fortran.في بعض الحالات، رأيت التبعية المترجمة مع g77, ، على الآخرين رأيته مجمعًا معه gfortran.مشروعي إذن هو ./configure'د لربط مع أي منهما -lg2c أو -lgfortran, لكن حتى الآن كنت أفعل ذلك يدويًا.

إذا كان ذلك ممكنًا، كيف يمكنني معرفة ذلك من خلال البحث في المكتبة التابعة (عبر على سبيل المثال. nm أو بعض المرافق الأخرى؟)، سواء كان المترجم المستخدم g77 (وبعد ذلك سأستخدم -lg2c في خيارات الارتباط الخاصة بي) أو gfortran (وبعد ذلك سأستخدم -lgfortran)?

شكرا لك مقدما!

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

المحلول

nm filename | fgrep ' __g77'

وسوف تعطي نتائج إذا تم استخدام مجموعة ال77، وفي الوقت نفسه

nm filename | fgrep '@@GFORTRAN'

وسوف تعطي نتائج إذا تم استخدام gfortran.

نصائح أخرى

أنت بحاجة إلى grep لشيء ما، في إخراج nm filename, يشير ذلك إلى ما إذا تم استخدام g77 أو gfortran.في معظم الحالات، إذا كانت المكتبة تقوم على الأقل بالإدخال والإخراج في مكان واحد، فسوف تستدعي libg2c أو libgfortran وستلاحظ وجود رمز به g77 فيه، أو com.gfortran.لذا، أفضل رهان لك هو استخدام grep:

nm filename | grep _g77_
nm filename | grep _gfortran_

ملاحظتان:

  1. الزحف ل @@GFORTRAN كما اقترح Geocar غير موثوق به:سيعمل فقط على الأنظمة الأساسية التي يتم فيها دعم إصدار المكتبة، والتي تتضمن على سبيل المثال.Linux وليس Windows أو Mac OS.
  2. لا يزال من الممكن أن بعض التعليمات البرمجية المترجمة لا تستدعي وظيفة مكتبة الدعم على الإطلاق (إذا كان كل ما تفعله هو عملية حسابية بسيطة ولا تحتوي على مدخلات ومخرجات، على سبيل المثال).في هذه الحالة، ما لم يتم تجميعه مع خيارات تصحيح الأخطاء، فمن المستحيل معرفة المترجم الذي أخرجه.

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

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