GCC fatal error: stdio.h: No such file or directory
Solution 1
macOS
I had this problem too (encountered through Macports compilers). Previous versions of Xcode would let you install command line tools through xcode/Preferences, but xcode5 doesn't give a command line tools option in the GUI, that so I assumed it was automatically included now. Try running this command:
xcode-select --install
If you see an error message that developer tools are already installed (and still header files can't be found), wipe out any existing one to do a fresh installation:
sudo rm -rf /Library/Developer/CommandLineTools
Ubuntu
(as per this answer)
sudo apt-get install libc6-dev
Alpine Linux
(as per this comment)
apk add libc-dev
Solution 2
Mac OS Mojave
The accepted answer no longer works. When running the command xcode-select --install
it tells you to use "Software Update" to install updates.
In this link is the updated method:
Open a Terminal and then:
cd /Library/Developer/CommandLineTools/Packages/
open macOS_SDK_headers_for_macOS_10.14.pkg
This will open an installation Wizard.
Update 12/2019
After updating to Mojave 10.15.1 it seems that using xcode-select --install
works as intended.
Solution 3
ubuntu users:
sudo apt-get install libc6-dev
specially ruby developers that have problem installing gem install json -v '1.8.2'
on their VMs
Solution 4
I know my case is rare, but I'll still add it here for someone who troubleshoots it later. I had a Linux Kernel module target in my Makefile and I tried to compile my user space program together with the kernel module that doesn't have stdio. Making it a separate target solved the problem.
Solution 5
I had the same problem. I installed "XCode: development tools" from the app store and it fixed the problem for me.
I think this link will help: https://itunes.apple.com/us/app/xcode/id497799835?mt=12&ls=1
Credit to Yann Ramin for his advice. I think there is a better solution with links, but this was easy and fast.
Good luck!
Related videos on Youtube

Jules
Expert Python programmer with experience working with the Linux network stack, REST APIs, and relational databases (and Postgres in particular). There's some devops experience in there too, but software dev is my preference. Not currently open to new work.
Updated on January 11, 2022Comments
-
Jules 12 months
I'm trying to compile a program in C on OS X 10.9 with GCC 4.9 (experimental). For some reason, I'm getting the following error at compile time:
gcc: fatal error: stdio.h: No such file or directory
I then tried a simple Hello World program:
#include <stdio.h> int main(int argc, const char *argv[]) { printf("Hello, world!"); return 0; }
Again, upon running
gcc -o ~/hello ~/hello.c
, I got the same error. I'm using an experimental version ofgcc
, but it seems implausible that there would be a release which generated errors upon importingstdio
. What could be causing this issue, and how can it be fixed?-
Christian Ternus about 9 yearsYou can see where gcc is looking for header files by doing
echo "#include <bogus.h>" | gcc -v -x c -
and examining the search paths. -
Jules about 9 yearsVery useful command! It doesn't look like
stdio.h
is in any of GCC's search paths. -
Ivan about 9 yearsMavericks no longer has a base /usr/include. You need to link it into place from the XCode OS 10.9 SDK.
-
p0lAris about 9 yearsBTW,
int main
's first parameter is an int and not int *argc. -
Jules about 9 years@YannRamin Thanks, going to try that.
-
Jules about 9 years@flippex17 Really? I thought it was argument count, and then the argument values.
-
p0lAris about 9 yearsYes, it's an
integer
type. -
rici about 9 years@user2615799: It is argument count. It's not pointer to argument count.
-
Jules about 9 yearsAlright, thanks for the clarification. @YannRamin I'm not sure how to do that, actually. I'm currently at Xcode > Preferences > Locations, but I can't find any options for library locations. Couldn't this be done by setting the
$LIBRARY_PATH
environment variable? -
Crowman about 9 yearsNo, since headers are not libraries.
C_INCLUDE_PATH
or the-isystem
flag are what you want. -
Jules about 9 yearsI tried setting
C_INCLUDE_PATH
(previously an empty variable) to the location ofstdio.h
, but the issue persists. On a possibly related note, I get no issues when I try importingstdio.h
ingdb
. -
Ivan about 9 years@user2615799 Its at
sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include /usr/include
-
Michael over 5 years@YannRamin Location changed, but when I fix that I get
ln: /usr/include: Operation not permitted
. Running as sudo!
-
-
Sjors Provoost over 8 yearsIf you're using Xcode 6 beta 5, this command might fail. In that case you need to do
sudo xcode-select -s /Applications/Xcode.app
. When you're done, switch back usingsudo xcode-select -s /Applications/Xcode6-Beta5.app
. -
dhaupin over 6 yearsInteresting. Thanks. This lib also solves some other issues. Recently, I encountered it trying to run a benchmark for petabyet.com (which uses gcc).
-
Shadi almost 6 yearsOn alpine linux I needed
apk add libc-dev
-
user124384 over 5 yearsAre you referring to just normal Xcode? Or is there some special version called "XCode: development tools"? Because I only see normal Xcode in the App Store. Granted, this is 4 years into the future from when this answer was posted.
-
user124384 over 5 yearsWow. Still working with Xcode 8.0 and Sierra in 2017.
-
VanDavv over 4 yearsAlpine guide is extremely usefull for Docker images based on alpine distro, works as wanted
-
Bojan Dimovski over 3 yearsReinstalling the headers works also when upgrading to Xcode 10.2.
-
Steve Siegel about 3 yearsWhen I open macOS_SDK_headers_for_macOS_10.14.pkg, I get a scary Warning from the Installer: "This package is incompatible with this version of macOS and may fail to install." I have Mojave.
-
Samshel about 3 years@SteveSiegel what Mac OS version are you running? I upgraded to 10.15.1 and I no longer had to do this workaround. Updated my answer to reflect that.
-
Ratul Hasan over 2 yearsany suggestion for windows users? I am having this problem on windows
-
Admin over 2 years"updating to Mojave 10.15.1" that's incorrect. @SteveSiegel The pkg is deprecated. SDKROOT should be used. stackoverflow.com/a/63343829/10063119
-
Admin about 2 yearsFor macOS users who're still having problems after installing CLTs stackoverflow.com/questions/63342521/…
-
Jongwook Choi 12 monthsIn some situations, you may need to run
sudo rm -rf /Library/Developer/CommandLineTools
to wipe out any existing installations before runningxcode-select --install
.