7
Scrivo un programma c che include il file fcntl.h
. Cerco il file e ottenere risultati come segue:perché ci sono più fcntl.h in linux?
[[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);
...
trovo chiamate gcc /usr/include/asm-generic/fcntl.h
in realtà quando ho messo #include <fcntl.h>
in programma. Mi chiedo solo come gcc determini quale "fcntl.h" dovrebbe essere chiamato. C'è qualche ordine di chiamata o precedenza?
Dipende dalle impostazioni PATH o dall'opzione gcc '-I'. – LPs
dai un'occhiata a [Percorso di ricerca] (https://gcc.gnu.org/onlinedocs/cpp/Search-Path.html) – LPs
@LPs: perché tecnicamente vero, dovresti includere solo quello in/usr/include'. –