gcc
Derleyicinin dosyaları bulmak için izlediği kuralların tamamı şu adreste açıklanmaktadır: http://gcc.gnu.org/onlinedocs/cpp/Search-Path.html
Bir içerme dosyasının nereden geldiğini öğrenmek için hızlı bir komut satırı hilesi aşağıdadır: 1
echo '#include <unistd.h>' | gcc -E -x c - > unistd.preprocessed
Ardından, unistd.preprocessed
dosyaya bakarsanız, aşağıdaki satırları fark edeceksiniz:
# 1 "/usr/include/unistd.h" <some numbers>
Bunlar, aşağıdaki satır bloğunun (bir sonraki # number ...
satıra kadar ) dosyadan geldiğini söyler /usr/include/unistd.h
.
Yani, dahil edilen dosyaların tam listesini bilmek istiyorsanız, # number
satırlar için grep yapabilirsiniz :
echo '#include <unistd.h>' | gcc -E -x c - | egrep '# [0-9]+ ' | awk '{print $3;}' | sort -u*emphasized text*
Ubuntu 10.04 / gcc 4.4.3 sistemimde bu aşağıdakileri üretir:
$ echo '#include <unistd.h>' | gcc -E -x c - | egrep '# [0-9]+ ' | awk '{print $3;}' | sort -u
"<built-in>"
"<command-line>"
"<stdin>"
"/usr/include/bits/confname.h"
"/usr/include/bits/posix_opt.h"
"/usr/include/bits/predefs.h"
"/usr/include/bits/types.h"
"/usr/include/bits/typesizes.h"
"/usr/include/bits/wordsize.h"
"/usr/include/features.h"
"/usr/include/getopt.h"
"/usr/include/gnu/stubs-64.h"
"/usr/include/gnu/stubs.h"
"/usr/include/sys/cdefs.h"
"/usr/include/unistd.h"
"/usr/lib/gcc/x86_64-linux-gnu/4.4.3/include/stddef.h"
1 Not: İçerme dosyaları için arama yolu -I
komut satırı seçeneği ile değiştirilir; bu nedenle çağrına herhangi bir -I path
argüman eklemelisiniz gcc
. Eğer bir C ++ kaynak derleme Ayrıca, eğer, sen değiştirmesi gerekir -x c
ile -x c++
.
unistd.h
bir C başlık dosyası; Java ile ne ilgisi var?