Точні правила, якими керується gcc
компілятор пошуку файлів, що включають, пояснюються на веб- сторінці: http://gcc.gnu.org/onlinedocs/cpp/Search-Path.html
Швидкий фокус командного рядка, щоб дізнатися, звідки походить файл включення, такий: 1
echo '#include <unistd.h>' | gcc -E -x c - > unistd.preprocessed
Потім, якщо ви подивитесь на unistd.preprocessed
файл, ви помітите рядки, такі як:
# 1 "/usr/include/unistd.h" <some numbers>
Вони говорять вам, що наступний блок рядків (до наступного # number ...
рядка) походить з файлу /usr/include/unistd.h
.
Отже, якщо ви хочете знати повний перелік файлів, що включені, ви можете проглядати # number
рядки:
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 це створює:
$ 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 Примітка: шлях пошуку файлів, що включають, змінюється параметром -I
командного рядка; тож слід додати будь-які -I path
аргументи до gcc
виклику. Крім того , якщо ви компілюєте джерело C ++, ви повинні замінити -x c
з -x c++
.
unistd.h
це файл заголовка C; що це стосується Java?