2012-07-29 09:08, Mohsen Pahlevanzadeh
skrev:
When I try "./configure --disable-shared --enable-static ......; make" with gcc 4.6.3 there are no compilation errors.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. 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 |