Nginx and libatomic

Igor Sysoev igor at sysoev.ru
Sun Dec 6 11:23:19 MSK 2009


On Sun, Dec 06, 2009 at 02:28:50AM -0500, pcdinh wrote:

> I tried to configure nginx 0.8.29 with libatomic 1.2 (manually built and installed) by specifying
> 
> --with-libatomic=/usr/local/lib
> (=> /usr/local/lib/libatomic_ops.a)

In this case you should use just
  --with-libatomic

You should see

checking for atomic_ops library ... found

> OR
> 
> --with-libatomic=../libatomic_ops-1.2
> (=> source code only)
> 
> but nginx shows no information to indicate if that configuration works or not

Yes, now ./configure does not show this, I need to fix it.

> --------------------------------
> 
> checking for OS
>  + Linux 2.6.18-164.el5PAE i686
> checking for C compiler ... found
>  + using GNU C compiler
>  + gcc version: 4.1.2 20080704 (Red Hat 4.1.2-46)
> checking for gcc -pipe switch ... found
> checking for gcc builtin atomic operations ... not found
> checking for gcc variadic macros ... found
> checking for C99 variadic macros ... found

> checking for OpenSSL library ... found
> checking for zlib library ... found
> checking for perl
>  + perl version: v5.8.8 built for i386-linux-thread-multi
>  + perl interpreter multiplicity found
> creating objs/Makefile

> Configuration summary
>   + using PCRE library: /usr/local/src/pcre-8.00
>   + using system OpenSSL library
>   + md5: using OpenSSL library
>   + using sha1 library: auto/lib/sha1
>   + using system zlib library
> 
>   nginx path prefix: "/usr/local/nginx"
>   nginx binary file: "/usr/local/sbin/nginx"
>   nginx configuration prefix: "/usr/local/nginx"
>   nginx configuration file: "/usr/local/nginx/nginx.conf"
>   nginx pid file: "/usr/local/nginx/nginx.pid"
>   nginx error log file: "/usr/local/nginx/logs/error.log"
>   nginx http access log file: "/usr/local/nginx/logs/access.log"
>   nginx http client request body temporary files: "/usr/local/nginx/temp/client_body"
>   nginx http proxy temporary files: "/usr/local/nginx/temp/proxy"
>   nginx http fastcgi temporary files: "/usr/local/nginx/temp/fastcgi"
> 
> The warning "checking for gcc builtin atomic operations ... not found" shows that my default compiler gcc 4.1.2 20080704 does not support atomic operations. I tried to configure CC=gcc44 CXX=g++44 to tell Nginx use newer GCC44 but it seems to ignore it.
> 
> Am I doing wrong here?

The gcc built-in atomic operations on x86 (but not on x86-64) are available
only if -march=-486 or higher is set. You should add either
--with-cc-opt="-march=pentiumpro"
or
--with-cpu-opt=pentiumpro

However, you should not worry about this, since nginx uses own atomic
operations implementation on x86 anyway. As well as on amd64, sparc32/64,
and ppc32/64. gcc atomic support and libatomic are required for other
platforms. 


-- 
Igor Sysoev
http://sysoev.ru/en/



More information about the nginx mailing list