I've executed mingw in verbose mode for the first input file from the boost regex library that fails to compile. This is the output: xxxxx@xxxxx:~/boost/boost_1_31_0/libs/regex/build$ i586-mingw32msvc-g++ --verbose -o generic/boost_regex/c_regex_traits.o -c -O2 -I../../../ ../src/c_regex_traits.cpp Reading specs from /usr/lib/gcc/i586-mingw32msvc/3.4.2/specs Configured with: /home/ron/devel/debian/mingw32/mingw32-3.4.2.20040916.1/build_dir/src/gcc-3.4.2-20040916-1/configure -v --prefix=/usr --target=i586-mingw32msvc --enable-languages=c,c++ --enable-threads --disable-multilib --enable-version-specific-runtime-libs Thread model: win32 gcc version 3.4.2 (mingw-special) /usr/libexec/gcc/i586-mingw32msvc/3.4.2/cc1plus -quiet -v -I../../../ ../src/c_regex_traits.cpp -quiet -dumpbase c_regex_traits.cpp -mtune=pentium -auxbase-strip generic/boost_regex/c_regex_traits.o -O2 -version -o /tmp/cccrEiOT.s ignoring nonexistent directory "/usr/lib/gcc/i586-mingw32msvc/3.4.2/../../../../i586-mingw32msvc/sys-include" #include "..." search starts here: #include <...> search starts here: ../../../ /usr/lib/gcc/i586-mingw32msvc/3.4.2/include/c++ /usr/lib/gcc/i586-mingw32msvc/3.4.2/include/c++/i586-mingw32msvc /usr/lib/gcc/i586-mingw32msvc/3.4.2/include/c++/backward /usr/lib/gcc/i586-mingw32msvc/3.4.2/include /usr/lib/gcc/i586-mingw32msvc/3.4.2/../../../../i586-mingw32msvc/include End of search list. GNU C++ version 3.4.2 (mingw-special) (i586-mingw32msvc) compiled by GNU C version 3.3.5 (Debian 1:3.3.5-2). GGC heuristics: --param ggc-min-expand=47 --param ggc-min-heapsize=32010 ../src/c_regex_traits.cpp: In static member function `static size_t boost::c_regex_traitsboost::regex_wchar_type::strnarrow(char*, size_t, const boost::regex_wchar_type*)': ../src/c_regex_traits.cpp:1052: error: `wcstombs' is not a member of `std' Just in case it helps i attach as well the verbose output when using c++ (succesful compilation): guest@asterix:~/boost/boost_1_31_0/libs/regex/build$ g++ --verbose -o generic/boost_regex/c_regex_traits.o -c-O2 -I../../../ ../src/c_regex_traits.cpp Reading specs from /usr/lib/gcc-lib/i486-linux/3.3.5/specs Configured with: ../src/configure -v --enable-languages=c,c++,java,f77,pascal,objc,ada,treelang --prefix=/usr--mandir=/usr/share/man --infodir=/usr/share/info --with-gxx-include-dir=/usr/include/c++/3.3 --enable-shared--with-system-zlib --enable-nls --without-included-gettext --enable-__cxa_atexit --enable-clocale=gnu --enable-debug --enable-java-gc=boehm --enable-java-awt=xlib --enable-objc-gc i486-linux Thread model: posix gcc version 3.3.5 (Debian 1:3.3.5-5) /usr/lib/gcc-lib/i486-linux/3.3.5/cc1plus -quiet -v -I../../../ -D__GNUC__=3 -D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=5 -D_GNU_SOURCE ../src/c_regex_traits.cpp -D__GNUG__=3 -quiet -dumpbase c_regex_traits.cpp -auxbase-strip generic/boost_regex/c_regex_traits.o -O2 -version -o /tmp/ccSZw3f5.s GNU C++ version 3.3.5 (Debian 1:3.3.5-5) (i486-linux) compiled by GNU C version 3.3.5 (Debian 1:3.3.5-5). GGC heuristics: --param ggc-min-expand=47 --param ggc-min-heapsize=32010 ignoring nonexistent directory "/usr/i486-linux/include" #include "..." search starts here: #include <...> search starts here: ../../.. /usr/include/c++/3.3 /usr/include/c++/3.3/i486-linux /usr/include/c++/3.3/backward /usr/local/include /usr/lib/gcc-lib/i486-linux/3.3.5/include /usr/include End of search list. as -V -Qy -o generic/boost_regex/c_regex_traits.o /tmp/ccSZw3f5.s GNU assembler version 2.15 (i386-linux) using BFD version 2.15 Thanks for the help, i do not see from the above if anything about compiler configuration is wrong. ---- Missatge original ----
The Boost config system isn't detecting that your std C++ lib is libstdc++3, it uses:
#include <utility>
#if whatever... #elif defined(__GLIBCPP__) || defined(__GLIBCXX__) // must be libstdc++3... // etc for this purpose.
Now I know that "real" mingw32 on win32, does define one or other of
these
macros (depending upon it's version), so I'm perplexed why it wouldn't be picking this up when cross-compiling under Linux. Maybe by running the compiler in "verbose" mode you can figure out what's happening, is there any chance that your compiler's include paths are setup incorrectly?
Perplexed yours, John Maddock.