In addition to building on Windows/MinGW, I am also trying to get this going on Mac OSX. I have had problems with Apple's early releases of GCC, so I am using a local build of GCC-3.3.1. I believe that the binary utilities are mostly GNU with Apple's linker. (as reports 1.38 as its version). I am building CLN against GMP 4.1.2. ( I said 4.2.1 earlier, but I really installed 4.1.2). CLN was configured with CC=gcc-3.3 CXX=g++-3.3 CXXFLAGS="-O2 -finline-functions" CFFLAGS="-Dunix -D__unix" (-D__unix was needed for a random number constructor) ./configure --with-gmp The build fails with cascading syntax errors in modinteger/cl_MI.cc and several other files. Thank you for any insight you may have on this problem, -Jonathan Brandmeyer g++-3.3 -v: Reading specs from /usr/local/lib/gcc-lib/powerpc-apple-darwin6.8/3.3.1/specs Configured with: ../gcc-3.3.1/configure --enable-languages=c,c++ --enable-threads=posix --program-suffix=-3.3 Thread model: posix gcc version 3.3.1 The build fails in the modinteger directory with this error: make SUBDIR=modinteger /bin/sh ../libtool --mode=compile g++-3.3 -O2 -finline-functions -Dunix -D__unix -I../include -I../include -I./integer/hash -I./integer -I./base/hash -I./base/digitseq -I./base/digit -Ibase -I./base -c ./modinteger/cl_MI.cc rm -f .libs/cl_MI.lo g++-3.3 -O2 -finline-functions -Dunix -D__unix -I../include -I../include -I./integer/hash -I./integer -I./base/hash -I./base/digitseq -I./base/digit -Ibase -I./base -c ./modinteger/cl_MI.cc -fno-common -DPIC -o .libs/cl_MI.lo In file included from modinteger/cl_MI.cc:80: modinteger/cl_MI_pow2.h:16: error: parse error before numeric constant modinteger/cl_MI_pow2.h: In function `const cln::cl_I cln::pow2_reduce_modulo(...)': modinteger/cl_MI_pow2.h:19: error: `x' undeclared (first use this function) modinteger/cl_MI_pow2.h:19: error: (Each undeclared identifier is reported only once for each function it appears in.) modinteger/cl_MI_pow2.h: In function `const cln::_cl_MI cln::pow2_canonhom(cln::cl_heap_modint_ring*, const cln::cl_I&)': modinteger/cl_MI_pow2.h:24: warning: cannot pass objects of non-POD type `const class cln::cl_I' through `...'; call will abort at runtime modinteger/cl_MI_pow2.h: At global scope: modinteger/cl_MI_pow2.h:27: error: parse error before numeric constant modinteger/cl_MI_pow2.h: In function `const cln::_cl_MI cln::pow2_plus(...)': modinteger/cl_MI_pow2.h:30: error: `y' undeclared (first use this function) modinteger/cl_MI_pow2.h: At global scope: modinteger/cl_MI_pow2.h:34: error: parse error before numeric constant modinteger/cl_MI_pow2.h:41: error: parse error before numeric constant modinteger/cl_MI_pow2.h:48: error: parse error before numeric constant modinteger/cl_MI_pow2.h:54: error: parse error before numeric constant modinteger/cl_MI_pow2.h:61: error: parse error before numeric constant modinteger/cl_MI_pow2.h:80: error: parse error before numeric constant modinteger/cl_MI_pow2.h:105: error: parse error before numeric constant modinteger/cl_MI_pow2.h:126: error: invalid conversion from `const cln::_cl_MI (*)(...)' to `const cln::_cl_MI (*)(cln::cl_heap_modint_ring*, const cln::_cl_MI&, const cln::_cl_MI&)' modinteger/cl_MI_pow2.h:126: error: invalid conversion from `const cln::_cl_MI (*)(...)' to `const cln::_cl_MI (*)(cln::cl_heap_modint_ring*, const cln::_cl_MI&, const cln::_cl_MI&)' modinteger/cl_MI_pow2.h:126: error: invalid conversion from `const cln::_cl_MI (*)(...)' to `const cln::_cl_MI (*)(cln::cl_heap_modint_ring*, const cln::_cl_MI&)' modinteger/cl_MI_pow2.h:138: error: invalid conversion from `const cln::_cl_MI (*)(...)' to `const cln::_cl_MI (*)(cln::cl_heap_modint_ring*)' modinteger/cl_MI_pow2.h:138: error: invalid conversion from `const cln::_cl_MI (*)(...)' to `const cln::_cl_MI (*)(cln::cl_heap_modint_ring*, const cln::_cl_MI&, const cln::_cl_MI&)' modinteger/cl_MI_pow2.h:138: error: invalid conversion from `const cln::_cl_MI (*)(...)' to `const cln::_cl_MI (*)(cln::cl_heap_modint_ring*, const cln::_cl_MI&)' modinteger/cl_MI_pow2.h:138: error: invalid conversion from `const cln::cl_MI_x (*)(...)' to `const cln::cl_MI_x (*)(cln::cl_heap_modint_ring*, const cln::_cl_MI&)' modinteger/cl_MI_pow2.h:138: error: invalid conversion from `const cln::cl_MI_x (*)(...)' to `const cln::cl_MI_x (*)(cln::cl_heap_modint_ring*, const cln::_cl_MI&, const cln::_cl_MI&)' modinteger/cl_MI_pow2.h:138: error: invalid conversion from `const cln::cl_I (*)(...)' to `const cln::cl_I (*)(cln::cl_heap_modint_ring*, const cln::cl_I&)' In file included from modinteger/cl_MI.cc:81: modinteger/cl_MI_pow2m1.h:16: error: parse error before numeric constant modinteger/cl_MI_pow2m1.h: In function `const cln::_cl_MI cln::pow2m1_canonhom(cln::cl_heap_modint_ring*, const cln::cl_I&)': modinteger/cl_MI_pow2m1.h:46: warning: cannot pass objects of non-POD type ` const class cln::cl_I' through `...'; call will abort at runtime modinteger/cl_MI_pow2m1.h: At global scope: modinteger/cl_MI_pow2m1.h:49: error: parse error before numeric constant modinteger/cl_MI_pow2m1.h:58: error: parse error before numeric constant modinteger/cl_MI_pow2m1.h:79: error: invalid conversion from `const cln::_cl_MI (*)(...)' to `const cln::_cl_MI (*)(cln::cl_heap_modint_ring*, const cln::_cl_MI&, const cln::_cl_MI&)' modinteger/cl_MI_pow2m1.h:79: error: invalid conversion from `const cln::_cl_MI (*)(...)' to `const cln::_cl_MI (*)(cln::cl_heap_modint_ring*, const cln::_cl_MI&)' modinteger/cl_MI_pow2m1.h:79: error: invalid conversion from `const cln::cl_I (*)(...)' to `const cln::cl_I (*)(cln::cl_heap_modint_ring*, const cln::cl_I&)' In file included from modinteger/cl_MI.cc:82: modinteger/cl_MI_pow2p1.h:16: error: parse error before numeric constant modinteger/cl_MI_pow2p1.h: In function `const cln::_cl_MI cln::pow2p1_canonhom(cln::cl_heap_modint_ring*, const cln::cl_I&)': modinteger/cl_MI_pow2p1.h:53: warning: cannot pass objects of non-POD type ` const class cln::cl_I' through `...'; call will abort at runtime modinteger/cl_MI_pow2p1.h: At global scope: modinteger/cl_MI_pow2p1.h:56: error: parse error before numeric constant modinteger/cl_MI_pow2p1.h:67: error: parse error before numeric constant modinteger/cl_MI_pow2p1.h:90: error: invalid conversion from `const cln::_cl_MI (*)(...)' to `const cln::_cl_MI (*)(cln::cl_heap_modint_ring*, const cln::_cl_MI&, const cln::_cl_MI&)' modinteger/cl_MI_pow2p1.h:90: error: invalid conversion from `const cln::_cl_MI (*)(...)' to `const cln::_cl_MI (*)(cln::cl_heap_modint_ring*, const cln::_cl_MI&)' modinteger/cl_MI_pow2p1.h:90: error: invalid conversion from `const cln::cl_I (*)(...)' to `const cln::cl_I (*)(cln::cl_heap_modint_ring*, const cln::cl_I&)' In file included from modinteger/cl_MI.cc:83: modinteger/cl_MI_montgom.h:87: error: parse error before numeric constant modinteger/cl_MI_montgom.h:93: error: parse error before numeric constant modinteger/cl_MI_montgom.h:99: error: parse error before numeric constant modinteger/cl_MI_montgom.h:106: error: parse error before numeric constant modinteger/cl_MI_montgom.h:112: error: parse error before numeric constant modinteger/cl_MI_montgom.h:118: error: parse error before numeric constant modinteger/cl_MI_montgom.h:132: error: parse error before numeric constant modinteger/cl_MI_montgom.h:158: error: invalid conversion from `const cln::_cl_MI (*)(...)' to `const cln::_cl_MI (*)(cln::cl_heap_modint_ring*)' modinteger/cl_MI_montgom.h:158: error: invalid conversion from `const cln::_cl_MI (*)(...)' to `const cln::_cl_MI (*)(cln::cl_heap_modint_ring*, const cln::cl_I&)' modinteger/cl_MI_montgom.h:158: error: invalid conversion from `const cln::_cl_MI (*)(...)' to `const cln::_cl_MI (*)(cln::cl_heap_modint_ring*, const cln::_cl_MI&, const cln::_cl_MI&)' modinteger/cl_MI_montgom.h:158: error: invalid conversion from `const cln::_cl_MI (*)(...)' to `const cln::_cl_MI (*)(cln::cl_heap_modint_ring*, const cln::_cl_MI&)' modinteger/cl_MI_montgom.h:158: error: invalid conversion from `const cln::cl_MI_x (*)(...)' to `const cln::cl_MI_x (*)(cln::cl_heap_modint_ring*, const cln::_cl_MI&)' modinteger/cl_MI_montgom.h:158: error: invalid conversion from `const cln::cl_MI_x (*)(...)' to `const cln::cl_MI_x (*)(cln::cl_heap_modint_ring*, const cln::_cl_MI&, const cln::_cl_MI&)' modinteger/cl_MI_montgom.h:158: error: invalid conversion from `const cln::cl_I (*)(...)' to `const cln::cl_I (*)(cln::cl_heap_modint_ring*, const cln::_cl_MI&)' make[2]: *** [cl_MI.lo] Error 1