Home / Today I Learned / Implicit Declaration of Function is Invalid in C99

Implicit Declaration of Function is Invalid in C99

1 min read
rspec ruby-on-rails

Implicit Declaration of Function is Invalid in C99

If you get the following error when attempting to install the thin gem on MacOS (gem install thin):

Fetching thin-1.7.2.gem
Building native extensions. This could take a while...
ERROR:  Error installing thin:
	ERROR: Failed to build gem native extension.

[Omitted for brevity]

thin.c:374:10: error: implicit declaration of function 'thin_http_parser_is_finished' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
  return thin_http_parser_is_finished(http) ? Qtrue : Qfalse;
         ^
9 errors generated.
make: *** [thin.o] Error 1

The solution:

Install the gem with the following C flags:

gem install thin -- --with-cflags="-Wno-error=implicit-function-declaration"

Same solution works if you are trying to install mailcatcher

  gem install mailcatcher -- --with-cflags="-Wno-error=implicit-function-declaration"

If you are installing the gem using bundler, then you can change bundler’s config to use the C flags

  bundle config build.thin --with-cflags="-Wno-error=implicit-function-declaration"

Credits for the solution:

Mike Szyndel on Github

Share this article: