GCC varsayılan içerme dizinleri nelerdir?


131

Gcc ile çok basit bir kaynak dosyası derlediğimde, stdio veya stdlib gibi standart include dosyalarının yolunu belirtmek zorunda değilim.

GCC bu dosyaları nasıl bulacağını nereden biliyor?

/usr/includeİçerisine kablolu bir yol var mı yoksa diğer işletim sistemi bileşenlerinden yolları alacak mı?

Yanıtlar:


188

gcc/ Tarafından kullanılan varsayılan yolları g++ve bunların önceliklerini bulmak için aşağıdaki komutların çıktısını incelemeniz gerekir:

  1. İçin C :
    gcc -xc -E -v -
  1. For C ++ :
    gcc -xc++ -E -v -

Kredi, Qt Creator ekibine gider .


5
cpp -v /dev/null -o /dev/null
Nehal J Wani

36

İçerme yollarını satırlardan otomatik olarak tek bir boşlukla başlayarak kesmeye izin veren daha kısa çıktılı bir komut vardır:

$ echo | gcc -Wp,-v -x c++ - -fsyntax-only
ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/4.8.2/include-fixed"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/4.8.2/../../../../x86_64-redhat-linux/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-redhat-linux/4.8.2/../../../../include/c++/4.8.2
 /usr/lib/gcc/x86_64-redhat-linux/4.8.2/../../../../include/c++/4.8.2/x86_64-redhat-linux
 /usr/lib/gcc/x86_64-redhat-linux/4.8.2/../../../../include/c++/4.8.2/backward
 /usr/lib/gcc/x86_64-redhat-linux/4.8.2/include
 /usr/local/include
 /usr/include
End of search list.

Kredi libc ++ ön sayfasına gider .


1

Ihor Kaharlichenko'nun C ++ 'ı dikkate alma cevabına ve uçurum 7'nin çıktısının kompaktlığı konusundaki cevabına katılsam da, bunlar gcc'nin çok yaylı sürümleri için hala eksiktir çünkü girdi işleme komut satırı parametrelerine ve makrolara bağlıdır.

Misal:

echo | /opt/gcc-arm-none-eabi-9-2019-q4-major/bin/arm-none-eabi-g++ -specs=nano.specs -mcpu=cortex-m4 -march=armv7e-m -mthumb -mfloat-abi=soft -x c++ -E -Wp,-v\ - -fsyntax-only verim


/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../arm-none-eabi/include/newlib-nano                                                                                                              
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/include/c++/9.2.1                                                                        
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/include/c++/9.2.1/arm-none-eabi/thumb/v7e-m/nofp                                         
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/include/c++/9.2.1/backward                                                               
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/include                                                                                                            
 /opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/include-fixed                                                                                                      
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/include                                                                                  

oysa echo | /opt/gcc-arm-none-eabi-9-2019-q4-major/bin/arm-none-eabi-g++ -x c++ -E -Wp,-v - -fsyntax-onlyverim


/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/include/c++/9.2.1                                                                        
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/include/c++/9.2.1/arm-none-eabi                                                          
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/include/c++/9.2.1/backward                                                               
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/include                                                                                                            
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/include-fixed                                                                                                      
/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/include                                                                                  

İlk çağrı kullanılır newlib(çıktının 1. ve 3. satırlarına bakın), ikincisi standart içerir ile gider. Listenin sonundaki ortak dosyalar, kullanımına bir örnektir include_next.

Alt satır: Dahil etme dizinlerini yazdırırken her zaman tüm makroları ve derleyici seçeneklerini göz önünde bulundurun .


1

Varsayılan arama yollarını listelemek için aşağıdakileri çalıştırın:

$(gcc -print-prog-name=cc1) -v

Bu, içerme yollarını listelemez. Yalnızca yolu ve kitaplık yolunu programlar
kayahr

cc1PATH üzerinde olmayan dahili bir komut olduğu için genellikle doğrudan çağrılamaz. Dosyayı nerede bulacağınızı açıklamak için yanıtınızı düzenlemek isteyebilirsiniz.
kayahr
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.