Dokładne zasady stosowane przez gcc
kompilator do znajdowania plików dołączanych są wyjaśnione na stronie : http://gcc.gnu.org/onlinedocs/cpp/Search-Path.html
Szybka sztuczka z wiersza poleceń, aby dowiedzieć się, skąd pochodzi plik dołączenia, jest następująca: 1
echo '#include <unistd.h>' | gcc -E -x c - > unistd.preprocessed
Następnie, jeśli spojrzysz na unistd.preprocessed
plik, zauważysz linie takie jak:
# 1 "/usr/include/unistd.h" <some numbers>
Informują one, że następujący blok linii (do następnego # number ...
wiersza) pochodzi z pliku /usr/include/unistd.h
.
Więc jeśli chcesz poznać pełną listę dołączonych plików, możesz grep dla # number
linii:
echo '#include <unistd.h>' | gcc -E -x c - | egrep '# [0-9]+ ' | awk '{print $3;}' | sort -u*emphasized text*
W moim systemie Ubuntu 10.04 / gcc 4.4.3 powoduje to:
$ 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 Uwaga: Ścieżka wyszukiwania plików dołączanych jest modyfikowana przez -I
opcję wiersza poleceń; dlatego powinieneś dodać wszelkie -I path
argumenty do gcc
wywołania. Ponadto, jeśli są kompilacji C ++ źródła, należy zastąpić -x c
z -x c++
.
unistd.h
to plik nagłówka C; co to ma wspólnego z Javą?