Các quy tắc chính xác được theo sau bởi gcc
trình biên dịch để tìm tệp bao gồm được giải thích tại: http://gcc.gnu.org/onlinesocs/cpp/Search-Path.html
Thủ thuật dòng lệnh nhanh để tìm ra tệp bao gồm từ đâu là: 1
echo '#include <unistd.h>' | gcc -E -x c - > unistd.preprocessed
Sau đó, nếu bạn nhìn vào unistd.preprocessed
tệp, bạn sẽ thấy các dòng như:
# 1 "/usr/include/unistd.h" <some numbers>
Chúng cho bạn biết rằng khối dòng sau (cho đến # number ...
dòng tiếp theo ) đến từ tệp /usr/include/unistd.h
.
Vì vậy, nếu bạn muốn biết danh sách đầy đủ các tệp được bao gồm, bạn có thể grep cho các # number
dòng:
echo '#include <unistd.h>' | gcc -E -x c - | egrep '# [0-9]+ ' | awk '{print $3;}' | sort -u*emphasized text*
Trên hệ thống Ubuntu 10.04 / gcc 4.4.3 của tôi, điều này tạo ra:
$ 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 Lưu ý: Đường dẫn tìm kiếm tệp bao gồm được sửa đổi bằng -I
tùy chọn dòng lệnh; vì vậy, bạn nên thêm bất kỳ -I path
đối số nào vào gcc
lời gọi. Ngoài ra, nếu bạn đang biên dịch một nguồn C ++, bạn nên thay thế -x c
bằng -x c++
.
unistd.h
là tệp tiêu đề C; Nó có liên quan gì với Java?