Welcome! Log In Create A New Profile

Advanced

Re: Configuring nginx with g++

Maxim Dounin
November 10, 2010 11:24PM
Hello!

On Wed, Nov 10, 2010 at 09:35:43PM -0500, Decimus Phostle wrote:

[...]

> > While this particular error probably should be fixed (it's as
> > trivial as including stdio.h into test in auto/types/sizeof) - in
> > general using C++ compiler to compile C code isn't going to
> > produce anything good.  These are two different languages.
>
> Yes. (That and I got a warning about the format/int type). Trivial as
> it may seem to fix, I was wondering if anyone has pointers on how to
> fix it as the file in which the error occurs (objs/autotest.c) is
> auto-generated.

Well, you got pointer. But as I already said - even when fixed
you won't see anything good trying to build nginx with g++ set
as C compiler.

> >> Q2) The above issue was encountered while trying to write a
> >> handler/module in C++. Is there another way I should be approaching
> >> this?
> >
> > Just create source file with appropriate extension and include
> > nginx header files in an extern "C" block, then write C++ code.
> > See src/misc/ngx_cpp_test_module.cpp for an example (really simple
> > one though).
>
> I did look at this. [Naive question follows: ] However as the
> modules/handlers get compiled/linked along with the server in nginx, I
> was under the assumption that if I need to write a C++ module/handler
> then I must compile nginx with g++ (instead of cc). (As the usual way
> to compile build the server + modules is "./configure
> --add-module=foobar && make && make install"). Am I missing something
> or is there another way to do this? Please let me know.

As it was already pointed out - you don't want to compile nginx
with g++, as it's written in C, not C++, while gcc invoked as g++
will assume .c files are in C++.

What you want is to compile *your module* with C++ compiler. This
is easy (even keeping in mind that nginx's build doesn't
distinguish between source files and always calls ${CC}): gcc will
recognize your module is in C++ as long as it's named
appropriately named[1] (e.g. *.cpp as in case of test module).

[1] http://gcc.gnu.org/onlinedocs/gcc-4.5.1/gcc/Invoking-G_002b_002b.html#Invoking-G_002b_002b

The only thing you have to do is to include C++ standard library
during linking. This may be done e.g. with --with-ld-opt
configure argument.

E.g. the following will compile nginx with test cpp module:

./configure --with-ld-opt="-lstdc++" --with-cpp_test_module && make

Maxim Dounin

_______________________________________________
nginx mailing list
nginx@nginx.org
http://nginx.org/mailman/listinfo/nginx
Subject Author Posted

Configuring nginx with g++

Decimus Phostle November 10, 2010 07:26PM

Re: Configuring nginx with g++

Maxim Dounin November 10, 2010 08:48PM

Re: Configuring nginx with g++

Decimus Phostle November 10, 2010 09:40PM

Re: Configuring nginx with g++

Piotr Sikora November 10, 2010 11:18PM

Re: Configuring nginx with g++

Maxim Dounin November 10, 2010 11:24PM

Re: Configuring nginx with g++

Decimus Phostle November 11, 2010 06:08PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 131
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready