กฎที่ถูกต้องตามด้วย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
มาจากไฟล์
ดังนั้นหากคุณต้องการทราบรายชื่อไฟล์ทั้งหมดที่รวมอยู่คุณสามารถ grep สำหรับ# 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 ใช้กับอะไรได้บ้าง