Building nginx with TCP_FASTOPEN enabled

Vincent Bernat bernat at
Sun Aug 10 12:53:35 UTC 2014

 ❦ 10 août 2014 07:59 -0400, "mastercan" <nginx-forum at> :

>> Try looking into objs/autoconf.err, it has details about configure 
>> test failures.  Most likely, the TCP_FASTOPEN constant isn't 
>> defined since your glibc isn't recent enough, something like 2.18+ 
>> is needed.
> Yes, you're right. glibc was the problem. I tried to build an nginx deb
> package on a development machine with updated glibc libs and installed it on
> the production server.
> Unfortunately I get this error when trying to start nginx:
> "/lib/x86_64-linux-gnu/ version `GLIBC_2.14' not found (required
> by /usr/sbin/nginx)"
> So I guess I must upgrade glibc on the production server as well...which
> might break dependencies...

There is nothing in this feature that needs a recent glibc except the
definition of TCP_FASTOPEN constant. On the machine where you compile,
you can just add the constant in /usr/include/linux/tcp.h and
/usr/include/netinet/tcp.h. The resulting binary will work on another
machine without this modification.

nginx should just define this symbol when not available. The remaining
of the code is already detecting at runtime if this feature is available
or not.
Localise input and output in subroutines.
            - The Elements of Programming Style (Kernighan & Plauger)

More information about the nginx mailing list