जीसीसी के लिए हेडर फाइलें कहां स्थित हैं?


10

मैं मैन्युअल रूप से math.hऔर जैसी कुछ हेडर फाइलें जोड़ना चाहता हूं graphic.h, gccलेकिन यह नहीं जानता कि उन्हें कहां रखा जाए।

जवाबों:


13

सबसे पहले /usr/includeया में एक नज़र रखना /usr/local/include

अगर आपको वहां कुछ नहीं मिला, तो कोशिश करें:

`gcc -print-prog-name=cc1plus` -v

यह कमांड gcc से पूछता है कि यह कौन सी C + प्रीप्रोसेसर का उपयोग कर रहा है, और फिर उस प्रीप्रोसेसर को पूछता है जिसमें यह शामिल है।

आपको अपने विशिष्ट सेटअप के लिए एक विश्वसनीय उत्तर मिलेगा।

इसी तरह, सी प्रीप्रोसेसर के लिए:

`gcc -print-prog-name=cc1` -v

6

यदि आप केवल यह जानना चाहते हैं कि फ़ाइल कहाँ रखी गई है, तो बस ढूँढें कमांड का उपयोग करें :

locate -b '\math.h'
locate -b '\graphics.h'

हो सकता है कि आपके पास अपने डेटाबेस को अपडेट करने से पहले अतिरिक्त हो:

sudo updatedb

यही कारण है कि मैं अपने हेडर स्थान को खोज रहा हूं। यह खोज आदेश का उपयोग करने की तुलना में बहुत तेज़ है ।


math.hपहले से मौजूद होना चाहिए। उदाहरण:/usr/include/c++/7.3.0/math.h
Knud लार्सन

सामान्य तौर पर आप केवल gcc name.c -o name -lm के
abu_bua

बैकस्लैश अपने बेसनेम में पूर्ववर्ती पात्रों के साथ फाइलों के मिलान को रोकने के लिए कैसे कार्य करता है? स्ट्रिंग \math.hका मूल्यांकन करना चाहिए math.h, लेकिन मैं देख रहा हूं कि \math.hजैसे tgmath.hऔर मेल खाने वाली फ़ाइलों से बचा जाता है quadmath.h
user001

1
FROM 'man find': बिल्कुल NAME (नहीं * NAME *) नामक फ़ाइल की खोज करने के लिए, find -b '\ NAME' का उपयोग करें क्योंकि \ globbing चरित्र है, यह * NAME * द्वारा NAME के ​​अंतर्निहित प्रतिस्थापन को अक्षम करता है।
abu_bua

धन्यवाद। मैंने जाँच की थी man locate, लेकिन मुझे लगता है कि मेरे पास locate(1)मैन पेज का एक अलग संस्करण है (जिसका एक भी उदाहरण नहीं है \ )।
user001
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.