Cross compilation support for nginx

Daniele Salvatore Albano - Lavoro info at daccii.it
Tue Mar 1 17:41:57 MSK 2011


Hi to all,

this is my first message here  :)

I love this webserver and i'm trying to get it running on an x86 
embedded system, an alix 2d13. I've built my system using crosstools-ng, 
buildroot with some own patches and a really recent kernel, version 2.6.37.

My appliance need to handle a lot of http connection to serve static 
pages and, while using lighttpd i got good results, i want more so i'm 
trying to switch to nginx!

The main problem is that nginx uses a (really nice) hand-made configure 
script (or it seems to be this at me) that natively doesn't support 
cross compilation.

My objective is to let nginx to be built using a cross compiler on 
linux, actually for x86/32bit.

To do this i patched the configure system to don't run features that 
doesn't need to be run and to skip features that need to be run.
Values features, as types size, have been replaced using predefined 
values (this could give strange problems in some cases i think, for 
example for NGX_SYS_NERR).

I've done really few tests because my toolchain was compiled with uClibc 
and the AIO support isn't there (well, this is weird ... i've compiled 
it but it isn't there) so i'm switcing to eglibc (not much a problem).
I got nginx compiled, but i didn't test it yet: well it started on the 
build machine without segfaulting (my build system uses eglibc 2.11 
while i used eglibc 2.12 for the target machine so no much difference).

Modifications are done on 0.9.5 and not on git, but this stuff isn't 
directly related to sources so should be ininfluent (i think). Attached 
there is a preliminary test patch.

Someone can give a shot to the attached patch, please :)

I've some questions:
- i've seen that ngx_error.c need to get max error messages count, i've 
workaraounded the problem manually adding it to the configure script but 
it's an hack but really i didn't have any idea on how to resolve it;
- i've used NGX_PLATFORM and crossbuild to define a crossbuild setting 
it to cross-linux-32, is this fine?
- mmap(MAP_ANON|MAP_SHARED) and mmap("/dev/zero", MAP_SHARED) features 
can't be tested because need to run, must them be dropped or must be 
enabled by default?

I've compiled it using
./configure --with-poll_module --with-file-aio --with-ipv6 
--with-http_flv_module --with-http_gzip_static_module --without-pcre 
--without-http_gzip_module --without-http-cache 
--without-http_rewrite_module --without-http_uwsgi_module 
--without-http_scgi_module 
--with-cc="/home/daniele/sviluppo/wifiguide/ct-ng/toolchain/bin/i586-itechcon-linux-gnu-cc 
--sysroot=/home/daniele/sviluppo/wifiguide/ct-ng/toolchain/i586-itechcon-linux-gnu/sysroot" 
--with-cpp="/home/daniele/sviluppo/wifiguide/ct-ng/toolchain/bin/i586-itechcon-linux-gnu-cpp 
 
--sysroot=/home/daniele/sviluppo/wifiguide/ct-ng/toolchain/i586-itechcon-linux-gnu/sysroot" 
  --with-cpu-opt="pentium" --crossbuild=cross-linux-32


Attached there are configure and make output too.


Best regards,
Daniele

-- 
Daniele Salvatore Albano
____________________________________________________________
                                         |
Daniele Salvatore Albano                | web site:
  IT Consultant                          | http://www.daccii.it
  Website Design and Development         |
  Software Engineer and Developer        | e-mail:
  Linux Servers SetUp And Administration | info at daccii.it
  Embedded Network Solutions             | d.albano at gmail.com

Ai sensi del D.Lgs. 196/2003 si precisa che le informazioni contenute in 
questo messaggio sono riservate ed a uso esclusivo del destinatario. 
Qualora il messaggio in parola Le fosse pervenuto per errore, La 
invitiamo ad eliminarlo senza copiarlo e a non inoltrarlo a terzi, 
dandocene gentilmente comunicazione. Grazie.
Pursuant to Legislative Decree No. 196/2003, you are hereby informed 
that this message contains confidential information intended only for 
the use of the addressee. If you are not the addressee, and have 
received this message by mistake, please delete it and immediately 
notify us. You may not copy or disseminate this message to anyone. Thank 
you.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: nginx-0.9.5-crosscompile.patch
URL: <http://nginx.org/pipermail/nginx-devel/attachments/20110301/cb3f0be6/attachment-0003.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: nginx-configure-output
URL: <http://nginx.org/pipermail/nginx-devel/attachments/20110301/cb3f0be6/attachment-0004.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: nginx-make-output
URL: <http://nginx.org/pipermail/nginx-devel/attachments/20110301/cb3f0be6/attachment-0005.ksh>


More information about the nginx-devel mailing list