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