حيث يتم تضمين الملفات المخزنة أوبونتو لينكس دول مجلس التعاون الخليجي

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

  •  10-07-2019
  •  | 
  •  

سؤال

لذا عندما نقوم التالية:

#include <stdio.h>

مقابل

#include "myFile.h"

مترجم دول مجلس التعاون الخليجي في حالتي يعلم أين stdio.ح (و حتى ملف الكائن) الموجودة على القرص الصلب.هو فقط يستخدم الملفات مع أي تفاعل من لي.

أنا أعتقد أن على أوبونتو لينكس آلة يتم تخزين الملفات في /usr/include/. كيف مترجم أعرف من أين للبحث عن هذه الملفات ؟ هذا هو شكلي أو هذا مجرد توقع الافتراضية ؟ حيث كنت ابحث عن هذا التكوين ؟

منذ أنا أسأل سؤال بشأن وتشمل هذه الملفات ، ما هي مصدر الملفات ؟ أعرف أن هذا قد يكون غامض في لينكس المجتمع ولكن الذي يدير هذه ؟ الذي من شأنه توفير وإدارة نفس الملفات على ويندوز مترجم.

كنت دائما تحت انطباع بأنهم تأتي مع مترجم ولكن كان هذا الافتراض...

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

المحلول

انظر هنا: مسار البحث

موجز:

#include <stdio.h>

عندما يتضمن الملف بين قوسين المعالج أولا البحث في المسارات المحددة عن طريق -أنا العلم.ثم البحث القياسية تشمل مسارات (انظر الرابط أعلاه ، واستخدام -v العلم أن الاختبار على النظام الخاص بك).

#include "myFile.h"

عند إدراج ملف في الاقتباس المعالج أولا بالبحث في الدليل الحالي ، ثم المسارات المحددة من قبل -iquote, ثم -أنا المسارات ، ثم مستوى المسارات.

-nostdinc يمكن أن تستخدم لمنع المعالج من البحث القياسية مسارات في كل شيء.

متغيرات البيئة ويمكن أيضا أن تستخدم لإضافة مسارات البحث.

عند ترجمة إذا كنت تستخدم -v العلم يمكنك أن ترى مسارات البحث المستخدمة.

نصائح أخرى

دول مجلس التعاون الخليجي هي غنية ومعقدة "بتدبير" برنامج المكالمات العديد من البرامج الأخرى على أداء مهامها.لغرض محدد رؤية أين #include "goo" و #include <zap> سيتم البحث في النظام الخاص بك ، أوصي بما يلي:

$ touch a.c
$ gcc -v -E a.c
 ...
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /usr/lib/gcc/i686-apple-darwin9/4.0.1/include
 /usr/include
 /System/Library/Frameworks (framework directory)
 /Library/Frameworks (framework directory)
End of search list.
# 1 "a.c"

هذه هي طريقة واحدة لرؤية قوائم البحث عن الملفات المضمنة ، بما في ذلك (إن وجدت) الدلائل التي #include "..." ولكن #include <...> لن.هذه قائمة محددة أنا يظهر هو في الواقع على نظام التشغيل Mac OS X (ويعرف أيضا باسم داروين) ولكن الأوامر أوصي سوف تظهر لك قوائم البحث (وكذلك للاهتمام تفاصيل التكوين التي كنت استبدال ... هنا;-) على أي نظام في دول مجلس التعاون يعمل بشكل صحيح.

كارل أجاب البحث-طريق السؤال ، ولكن بقدر ما "مصدر من الملفات" يذهب ، واحد شيء أن تكون على علم أنه إذا قمت بتثبيت libfoo حزمة تريد أن تفعل بعض التطور مع أنه (أي استخدام رؤوس) ، سوف تحتاج أيضا إلى تثبيت libfoo-dev.المكتبة القياسية رأس الملفات الموجودة في /usr/include, كما رأيت.

علما أن بعض المكتبات مع الكثير من رؤوس سيتم تثبيت لهم الدليل ، على سبيل المثال ، /usr/include/openssl.لتشمل واحد من هؤلاء فقط توفير المسار دون /usr/include جزء منه ، على سبيل المثال:

#include <openssl/aes.h>

على \#include ملفات يتم تخزينها في دول مجلس التعاون الخليجي /usr/include .مستوى تضمين الملفات g++ يتم تخزينها في /usr/include/c++.

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