[Clfs-support] build error in PPL-0.12.1 (chapter 5.12)

William Harrington kb0iic at berzerkula.org
Sat Jun 1 18:47:08 PDT 2013


On Jun 1, 2013, at 8:26 PM, Daniel King wrote:

> Hello All,
>
> I am currently following the the cross compiled linux from  
> scratch(Version GIT-20130531-x86_64-Multilib). I am using Ubuntu  
> 13.04on an AMD FX system.  I was building PPL 0.12.1 when make  
> returned the following error.
>
> make all-am
> make[3]: Entering directory `/mnt/lfs/sources/ppl-0.12.1/src'
> /bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. - 
> I..  -I.. -I../src -I/cross-tools/include -I/cross-tools/include -g - 
> frounding-math -W -Wall -MT assert.lo -MD -MP -MF .deps/assert.Tpo - 
> c -o assert.lo assert.cc
> libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -I/ 
> cross-tools/include -I/cross-tools/include -g -frounding-math -W - 
> Wall -MT assert.lo -MD -MP -MF .deps/assert.Tpo -c assert.cc -fPIC - 
> DPIC -o .libs/assert.o
> mv -f .deps/assert.Tpo .deps/assert.Plo
> /bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. - 
> I..  -I.. -I../src -I/cross-tools/include -I/cross-tools/include -g - 
> frounding-math -W -Wall -MT Box.lo -MD -MP -MF .deps/Box.Tpo -c -o  
> Box.lo Box.cc
> libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../src -I/ 
> cross-tools/include -I/cross-tools/include -g -frounding-math -W - 
> Wall -MT Box.lo -MD -MP -MF .deps/Box.Tpo -c Box.cc -fPIC -DPIC - 
> o .libs/Box.o
> In file included from checked.defs.hh:30:0,
> from Checked_Number.defs.hh:28,
> from Coefficient.types.hh:16,
> from Coefficient.defs.hh:27,
> from Box.defs.hh:29,
> from Box.cc:25:
> mp_std_bits.defs.hh:47:7: error: redefinition of 'class  
> std::numeric_limits<__gmp_expr<__mpz_struct [1], __mpz_struct [1]> >'
> In file included from checked.defs.hh:29:0,
> from Checked_Number.defs.hh:28,
> from Coefficient.types.hh:16,
> from Coefficient.defs.hh:27,
> from Box.defs.hh:29,
> from Box.cc:25:
> /cross-tools/include/gmpxx.h:3270:21: error: previous definition of  
> 'class std::numeric_limits<__gmp_expr<__mpz_struct [1], __mpz_struct  
> [1]> >'
> In file included from checked.defs.hh:30:0,
> from Checked_Number.defs.hh:28,
> from Coefficient.types.hh:16,
> from Coefficient.defs.hh:27,
> from Box.defs.hh:29,
> from Box.cc:25:
> mp_std_bits.defs.hh:108:7: error: redefinition of 'class  
> std::numeric_limits<__gmp_expr<__mpq_struct [1], __mpq_struct [1]> >'
> In file included from checked.defs.hh:29:0,
> from Checked_Number.defs.hh:28,
> from Coefficient.types.hh:16,
> from Coefficient.defs.hh:27,
> from Box.defs.hh:29,
> from Box.cc:25:
> /cross-tools/include/gmpxx.h:3307:21: error: previous definition of  
> 'class std::numeric_limits<__gmp_expr<__mpq_struct [1], __mpq_struct  
> [1]> >'
> make[3]: *** [Box.lo] Error 1
> make[3]: Leaving directory `/mnt/lfs/sources/ppl-0.12.1/src'
> make[2]: *** [all] Error 2
> make[2]: Leaving directory `/mnt/lfs/sources/ppl-0.12.1/src'
> make[1]: *** [all-recursive] Error 1
> make[1]: Leaving directory `/mnt/lfs/sources/ppl-0.12.1'
> make: *** [all] Error 2

Hello Daniel,

We are in the middle of adding gcc 4.8.1 and removing ppl. Use this  
patch for now:

--- src/p_std_bits.cc.org       2012-12-30 00:37:03.033948083 +0100
+++ src/mp_std_bits.cc  2012-12-30 00:44:12.893019313 +0100
@@ -25,6 +25,9 @@
  #include "ppl-config.h"
  #include "mp_std_bits.defs.hh"

+#if __GNU_MP_VERSION < 5 \
+  || (__GNU_MP_VERSION == 5 && __GNU_MP_VERSION_MINOR < 1)
+
  const bool std::numeric_limits<mpz_class>::is_specialized;
  const int std::numeric_limits<mpz_class>::digits;
  const int std::numeric_limits<mpz_class>::digits10;
@@ -70,3 +73,6 @@
  const bool std::numeric_limits<mpq_class>::traps;
  const bool std::numeric_limits<mpq_class>::tininess_before;
  const std::float_round_style  
std::numeric_limits<mpq_class>::round_style;
+
+#endif // __GNU_MP_VERSION < 5
+       // || (__GNU_MP_VERSION == 5 && __GNU_MP_VERSION_MINOR < 1)
--- src/mp_std_bits.defs.hh.org 2012-12-30 00:37:03.037948187 +0100
+++ src/mp_std_bits.defs.hh     2012-12-30 00:42:32.002424189 +0100
@@ -38,6 +38,9 @@
  #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
  void swap(mpq_class& x, mpq_class& y);

+#if __GNU_MP_VERSION < 5 \
+  || (__GNU_MP_VERSION == 5 && __GNU_MP_VERSION_MINOR < 1)
+
  namespace std {

  #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
@@ -164,6 +167,9 @@

  } // namespace std

+#endif // __GNU_MP_VERSION < 5
+       // || (__GNU_MP_VERSION == 5 && __GNU_MP_VERSION_MINOR < 1)
+
  #include "mp_std_bits.inlines.hh"

  #endif // !defined(PPL_mp_std_bits_defs_hh)

I'll link it at http://cross-lfs.org/~kb0iic/ppl-0.12.1-gmp_fixes-1.patch
Sincerely,

William Harrington



More information about the Clfs-support mailing list