compile error on Solaris 10
Hi, My environment is Solaris 10 , g++ 3.3.2 I try to use the header files directly using the definition -DBOOST_REGEX_NO_LIB I got the following errors doing a simple compilation using regex. g++ -fPIC -c -DUNIX -DSOLARIS -Dsun -D_PTHREADS -D_GLIBCXX_HAVE_MBSTATE_T -DBOOST_REGEX_NO_LIB -I./ -I../shared/ -I../shared/boost ndbdriver.cpp -o ndbdriver.o In file included from ../shared/boost/boost/regex/v4/regex_traits.hpp:35, from ../shared/boost/boost/regex/regex_traits.hpp:27, from ../shared/boost/boost/regex/v4/regex.hpp:39, from ../shared/boost/boost/regex.hpp:31, from ndbdriver.cpp:39: ../shared/boost/boost/regex/v4/regex_traits_defaults.hpp:79: error: redefinition of `bool boost::re_detail::is_combining(charT) [with charT = char]' ../shared/boost/boost/regex/v4/regex_traits_defaults.hpp:74: error: `bool boost::re_detail::is_combining(charT) [with charT = char]' previously declared here In file included from ../shared/boost/boost/regex/v4/regex.hpp:58, from ../shared/boost/boost/regex.hpp:31, from ndbdriver.cpp:39: ../shared/boost/boost/regex/v4/states.hpp:60: error: redefinition of `struct boost::re_detail::is_byte<char>' ../shared/boost/boost/regex/v4/states.hpp:58: error: previous definition of ` struct boost::re_detail::is_byte<char>' In file included from ../shared/boost/boost/functional/hash.hpp:6, from ../shared/boost/boost/regex/v4/basic_regex.hpp:23, from ../shared/boost/boost/regex/v4/regex.hpp:67, from ../shared/boost/boost/regex.hpp:31, from ndbdriver.cpp:39: ../shared/boost/boost/functional/hash/hash.hpp: In function `size_t boost::hash_value(char)': ../shared/boost/boost/functional/hash/hash.hpp:152: error: redefinition of ` size_t boost::hash_value(char)' ../shared/boost/boost/functional/hash/hash.hpp:142: error: `size_t boost::hash_value(char)' previously defined here ../shared/boost/boost/functional/hash/hash.hpp:152: error: redefinition of ` size_t boost::hash_value(char)' ../shared/boost/boost/functional/hash/hash.hpp:142: error: `size_t boost::hash_value(char)' previously defined here ../shared/boost/boost/functional/hash/hash.hpp: In member function `size_t boost::hash<char>::operator()(char) const': ../shared/boost/boost/functional/hash/hash.hpp:405: error: call of overloaded ` hash_value(char&)' is ambiguous ../shared/boost/boost/functional/hash/hash.hpp:137: error: candidates are: size_t boost::hash_value(bool) ../shared/boost/boost/functional/hash/hash.hpp:142: error: size_t boost::hash_value(char) ../shared/boost/boost/functional/hash/hash.hpp:147: error: size_t boost::hash_value(unsigned char) ../shared/boost/boost/functional/hash/hash.hpp:157: error: size_t boost::hash_value(short int) ../shared/boost/boost/functional/hash/hash.hpp:162: error: size_t boost::hash_value(short unsigned int) ../shared/boost/boost/functional/hash/hash.hpp:167: error: size_t boost::hash_value(int) ../shared/boost/boost/functional/hash/hash.hpp:172: error: size_t boost::hash_value(unsigned int) ../shared/boost/boost/functional/hash/hash.hpp:177: error: size_t boost::hash_value(long int) ../shared/boost/boost/functional/hash/hash.hpp:182: error: size_t boost::hash_value(long unsigned int) ../shared/boost/boost/functional/hash/hash.hpp:188: error: size_t boost::hash_value(wchar_t) ../shared/boost/boost/functional/hash/hash.hpp:195: error: size_t boost::hash_value(long long int) ../shared/boost/boost/functional/hash/hash.hpp:200: error: size_t boost::hash_value(long long unsigned int) ../shared/boost/boost/functional/hash/hash.hpp:314: error: size_t boost::hash_value(float) ../shared/boost/boost/functional/hash/hash.hpp:319: error: size_t boost::hash_value(double) ../shared/boost/boost/functional/hash/hash.hpp:324: error: size_t boost::hash_value(long double) ../shared/boost/boost/functional/hash/hash.hpp:152: error: size_t boost::hash_value(char) ../shared/boost/boost/functional/hash/hash.hpp: At global scope: ../shared/boost/boost/functional/hash/hash.hpp:406: error: redefinition of ` struct boost::hash<char>' ../shared/boost/boost/functional/hash/hash.hpp:405: error: previous definition of `struct boost::hash<char>' All the errors are from related to the basic types when expanded from the templates. Any idea what's going wrong ? -- Kelvin KF
All the errors are from related to the basic types when expanded from the templates. Any idea what's going wrong ?
Not really, but that's a pretty old gcc version. The errors seem to be because the compiler is treating types "char" and "signed char" as the same type, maybe there's a command line option to control this? Otherwise, you probably just need a newer compiler I'm afraid. HTH, John.
All the errors are from related to the basic types when expanded from the templates. Any idea what's going wrong ?
Not really, but that's a pretty old gcc version. The errors seem to be because the compiler is treating types "char" and "signed char" as the
same
type, maybe there's a command line option to control this? Otherwise, you probably just need a newer compiler I'm afraid.
HTH, John.
It turns out to be problem caused by other header files.
I put the #include
participants (2)
-
John Maddock
-
Kelvin Cheng