2016-04-05 14 views
7

fcntl.h dosyasını içeren bir c programı yazarım. Ben dosyayı arama ve aşağıdaki gibi sonuçlar elde: Ben programda #include <fcntl.h> koymak aslında gcc aramaları /usr/include/asm-generic/fcntl.h bulmaklinux'de neden birden fazla fcntl.h var?

[[email protected] csapp]$ find /usr/include/ -name "fcntl.h" 
/usr/include/asm/fcntl.h 
/usr/include/asm-generic/fcntl.h 
/usr/include/linux/fcntl.h 
/usr/include/sys/fcntl.h 
/usr/include/bits/fcntl.h 
/usr/include/fcntl.h 

[[email protected] csapp]$ grep -rn "O_RDONLY" /usr/include/ 
/usr/include/asm-generic/fcntl.h:19:#define O_RDONLY 00000000 
/usr/include/linux/cdrom.h:32: *  - drive = open("/dev/cdrom", O_RDONLY); 
/usr/include/linux/cdrom.h:33: *  + drive = open("/dev/cdrom", O_RDONLY | O_NONBLOCK); 
... 

. Sadece gcc'in hangi "fcntl.h" çağrılmasının gerektiğini nasıl belirlediğini merak ediyorum. Herhangi bir çağrı emri veya önceliği var mı?

+2

PATH ayarlarına veya gcc '-I' seçeneğine bağlıdır. – LPs

+2

[Arama Yolu] 'na bir göz atın (https://gcc.gnu.org/onlinedocs/cpp/Search-Path.html) – LPs

+1

@LPs: Neden teknik olarak doğruysa, sadece birini/usr/de kapsayacak. –

cevap

1

Bunlardan biri, tanıma dahil olana kadar olanı içeren bir diğerini içerir.

İlgili konular