-------------------------------------------------------------------------------
又开始折腾了, 静态编译 gcc-5.4.0 dwarf2
-------------------------------------------------------------------------------
http://ftp.gnu.org/gnu/mpfr/mpfr-3.1.4.tar.xz
-------------------------------------------------------------------------------
./configure
--prefix=/usr/local
--disable-shared
--enable-static
make && make install
-------------------------------------------------------------------------------
ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
-------------------------------------------------------------------------------
./configure
--prefix=/usr/local
--disable-shared
--enable-static
make && make install
-------------------------------------------------------------------------------
https://gmplib.org/download/gmp/gmp-6.1.1.tar.xz
-------------------------------------------------------------------------------
./configure
--host=i686-w64-mingw32
--build=i686-w64-mingw32
--target=i686-w64-mingw32
--host=i686-w64-mingw32
--prefix=/usr/local
--disable-shared
--enable-static
--enable-cxx
configure: summary of build options:
Version: GNU MP 6.1.1
Host type: i686-w64-mingw32
ABI: 32
Install prefix: /usr/local
Compiler: gcc
Static libraries: yes
Shared libraries: no
__declspec(dllexport) fix to --> __attribute__((visibility ("default")))
__declspec(dllimport) fix to -->
make && make install
-------------------------------------------------------------------------------
http://isl.gforge.inria.fr/isl-0.17.1.tar.xz
-------------------------------------------------------------------------------
./configure
--host=i686-w64-mingw32
--build=i686-w64-mingw32
--target=i686-w64-mingw32
--host=i686-w64-mingw32
--disable-shared
--enable-static
make && make install
-------------------------------------------------------------------------------
http://www.mr511.de/software/libelf-0.8.13.tar.gz
-------------------------------------------------------------------------------
./configure
--prefix=/usr/local
--disable-shared
--enable-static
make && make install
-------------------------------------------------------------------------------
http://bugseng.com/products/ppl/download/ftp/releases/1.2/ppl-1.2.tar.xz don't install the ppl-1.2
http://bugseng.com/products/ppl/download/ftp/releases/0.11.2/ppl-0.11.2.tar.bz2
http://bugseng.com/products/ppl/download/ftp/releases/0.12.1/ppl-0.12.1.tar.xz
-------------------------------------------------------------------------------
./configure
--prefix=/usr/local
--disable-shared
--enable-static
--enable-cxx
--with-gmp=/usr/local
make && make install
===============================================================================
configure: error: Cannot find GMP version 4.1.3 or higher.
GMP is the GNU Multi-Precision library:
see http://www.swox.com/gmp/ for more information.
When compiling the GMP library, do not forget to enable the C++ interface:
add --enable-cxx to the configuration options.
So I also faced the same issue and what I did was:
1) Went inside gmp-6.1.1 folder
2) make distclean
3) ./configure --prefix=/usr/local ... add --enable-cxx
4) make && make install
5) Went inside ppl-0.12.1 folder
6) ./configure --prefix=/usr/local ...
7) make & make install
Took some 10-20 mins to compile and things were fine.
===============================================================================
GMP version 5.1.0 (and, presumably, later versions) defines std::numeric_limits.
src/mp_std_bits.cc | 6 ++++++
src/mp_std_bits_defs.hh | 6 ++++++
2 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/src/mp_std_bits.cc b/src/mp_std_bits.cc
index c8da535..918b9af 100644
--- a/src/mp_std_bits.cc
+++ b/src/mp_std_bits.cc
@@ -25,6 +25,9 @@ site: http://bugseng.com/products/ppl/ . */
#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::is_specialized;
const int std::numeric_limits::digits;
const int std::numeric_limits::digits10;
@@ -70,3 +73,6 @@ const bool std::numeric_limits::is_modulo;
const bool std::numeric_limits::traps;
const bool std::numeric_limits::tininess_before;
const std::float_round_style std::numeric_limits::round_style;
+
+#endif // __GNU_MP_VERSION < 5
+ // || (__GNU_MP_VERSION == 5 && __GNU_MP_VERSION_MINOR < 1)
diff --git a/src/mp_std_bits_defs.hh b/src/mp_std_bits_defs.hh
index f71595a..0d078ec 100644
--- a/src/mp_std_bits_defs.hh
+++ b/src/mp_std_bits_defs.hh
@@ -38,6 +38,9 @@ void swap(mpz_class& x, mpz_class& y);
#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 @@ public:
} // 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)
===============================================================================
-------------------------------------------------------------------------------
http://www.bastoul.net/cloog/pages/download/cloog-0.18.4.tar.gz
-------------------------------------------------------------------------------
./configure
--prefix=/usr/local
--disable-shared
--enable-static
--with-ppl=/usr/local
--with-isl=system
-------------------------------------------------------------------------------
http://ftp.osuosl.org/pub/clfs/conglomeration/cloog-ppl/cloog-ppl-0.15.11.tar.gz
-------------------------------------------------------------------------------
./configure
--prefix=/usr/local
--disable-shared
--enable-static
--with-ppl=/usr/local
--with-gmp=/usr/local
modify Makefile add -lstdc++
LIBS = -lpsapi -lws2_32 -lmswsock -lgmp -lppl_c -lppl -lgmpxx -lstdc++
-------------------------------------------------------------------------------
http://ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.bz2
-------------------------------------------------------------------------------
export CPP=/mingw/bin/cpp
export LD_LIBRARY_PATH=/usr/local/lib
export LIBS=
export CFLAGS=' -I/usr/local/include -I/usr/mingw/i686-w64-mingw32/include '
export CPPFLAGS=' -I/usr/local/include -I/usr/mingw/i686-w64-mingw32/include '
export CXXFLAGS=' -I/usr/local/include -I/usr/mingw/i686-w64-mingw32/include '
export LDFLAGS=' -L/usr/local/lib -L/usr/mingw/i686-w64-mingw32/lib '
mkdir _build
cd _build
../gcc-5.4.0/configure
--prefix=/mingw32
--with-local-prefix=/mingw/local
--build=i686-w64-mingw32
--host=i686-w64-mingw32
--target=i686-w64-mingw32
--with-native-system-header-dir=/mingw/i686-w64-mingw32/include
--libexecdir=/usr/local/lib
--enable-bootstrap
--with-arch=i686
--with-tune=generic
--enable-languages=c,lto,c++,objc,obj-c++,fortran
--enable-shared
--enable-static
--disable-64bit
--enable-threads=win32
--enable-libatomic
--enable-graphite
--enable-fully-dynamic-string
--enable-libstdcxx-time=yes
--disable-libstdcxx-pch
--disable-libstdcxx-debug
--disable-isl-version-check
--enable-lto
--enable-libgomp
--disable-multilib
--enable-checking=release
--disable-rpath
--disable-win32-registry
--disable-nls
--disable-werror
--disable-symvers
--with-libiconv
--with-system-zlib
--with-gmp=/usr/local
--with-mpfr=/usr/local
--with-mpc=/usr/local
--with-isl=/usr/local
--with-gnu-as
--with-gnu-ld
--disable-sjlj-exceptions
--with-dwarf2
make && make install
-------------------------------------------------------------------------------
结论:自己编译太麻烦了, 现在最好用 MSYS2
MSYS2 支持 pacman 可以自动安装解决依赖关系库
下面链接中包含几乎所有的库
http://repo.msys2.org/mingw/i686/
有些遗憾的是有些库没有静态库, 需要静态库时还是自己编译.
-------------------------------------------------------------------------------
mingw32-gcc-5.4.0-win32-dwarf2-2016-08-21.7zmingw32-gcc-5.4.0-win32-sjlj-2016-08-21.7z