Re: [sigc] static compile error



2012-07-29 09:08, Mohsen Pahlevanzadeh skrev:
Dear all,

I  need to compile libsigc as static program into my appl.So, i
configure such as:
./configure   --prefix=/opt/libsigc++/ --disable-shared  --enable-static
But when i use make command, i get the following error:
//////////////////////////////////////////////////////////////////////
In file included from ../sigc++/signal.h:8:0,
                 from signal.cc:20:
../sigc++/signal_base.h:46:11: error: 'size_t' does not name a type
../sigc++/signal_base.h:95:3: error: 'size_type' does not name a type
../sigc++/signal_base.h:239:11: error: 'size_t' does not name a type
../sigc++/signal_base.h:261:3: error: 'size_type' does not name a type
In file included from signal.cc:20:0:
../sigc++/signal.h:33:11: error: 'size_t' does not name a type
../sigc++/signal.h:34:11: error: 'ptrdiff_t' does not name a type
../sigc++/signal.h:99:11: error: 'size_t' does not name a type
../sigc++/signal.h:100:11: error: 'ptrdiff_t' does not name a type
../sigc++/signal.h:276:11: error: 'size_t' does not name a type
../sigc++/signal.h:277:11: error: 'ptrdiff_t' does not name a type
../sigc++/signal.h:359:11: error: 'size_t' does not name a type
../sigc++/signal.h:360:11: error: 'ptrdiff_t' does not name a type
../sigc++/signal.h:430:11: error: 'size_t' does not name a type
../sigc++/signal.h:431:11: error: 'ptrdiff_t' does not name a type
../sigc++/signal.h:515:11: error: 'size_t' does not name a type
../sigc++/signal.h:516:11: error: 'ptrdiff_t' does not name a type
make[3]: *** [signal.lo] Error 1
make[3]: Leaving directory `/home/mohsen/Downloads/eCom tools/libsigc
++-2.2.0/sigc++'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/mohsen/Downloads/eCom tools/libsigc
++-2.2.0/sigc++'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/mohsen/Downloads/eCom tools/libsigc
++-2.2.0'
make: *** [all] Error 2
//////////////////////////////////////////////////////////////////////
How can i solve it?

Yours,
Mohsen.

When I try "./configure --disable-shared  --enable-static ......; make" with gcc 4.6.3 there are no compilation errors.
But when I look at the source code of sigc++/signal_base.h and sigc++/signal.h, I see that it's not correct.

sigc++/signal_base.h contains
  #include <cstddef>
which shall declare size_t and ptrdiff_t in namespace std. But size_t and ptrdiff_t are then used as if they were declared in global namespace.

Which compiler do you use? I wonder if you are one of the first persons who try to build libsigc++ with a compiler and a standard library that don't declare data types in more namespaces than required.
(I think it's like this: <cstddef> must declare size_t and ptrdiff_t in namespace std and may also declare them in global namespace. <stddef.h> when included in a C++ program, must declare size_t and ptrdiff_t in global namespace and may also declare them in namespace std.)

You can try changing
  #include <cstddef>
in sigc++/signal_base.h to
  #include <stddef.h>
and see if you can build libsigc++.

It would be fine if you could file a bug report. I think a fix in libsigc++ is needed.

Do you know that the LGPL license restricts your rights to link libsigc++ statically? I don't know all the details. Check with the long license text, if in doubt. I think that if you link statically, your resulting program or library must be released under the GPL or LGPL license.

Kjell



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]