ibex-team / ibex-lib

IBEX is a C++ library for constraint processing over real numbers.
http://ibex-team.github.io/ibex-lib/
GNU Lesser General Public License v3.0
69 stars 51 forks source link

ibex-2.8.9 ne compile pas #480

Closed bneveu closed 3 years ago

bneveu commented 4 years ago

sous ubuntu14, avec le compilateur g++4.8;4, ibex-2.8.9 ne compile pas.

voici les commandes

./waf configure --prefix=. --lp-lib=soplex --soplex-path=/certis/3/neveub/RECHERCHE/soplex/soplex-4.0.2

puis ./waf install

J'ai le message d'erreur ../src/symbolic/ibex_ExprPolynomial.cpp: In member function ‘void ibex::ExprPolynomial::add_or_sub(const ibex::ExprPolynomial&, bool)’: ../src/symbolic/ibex_ExprPolynomial.cpp:102:25: error: no matching function for call to ‘std::list::erase(std::list::const_iterator&)’

bneveu commented 4 years ago

message complet de configure ./waf configure --prefix=. --lp-lib=soplex --soplex-path=/certis/3/neveub/RECHERCHE/soplex/soplex-4.0.2 Setting top to : /certis/3/neveub/RECHERCHE/ibex/ibex-2.8.9/ibex-2.8.9 Setting out to : /certis/3/neveub/RECHERCHE/ibex/ibex-2.8.9/ibex-2.8.9/build Checking for 'g++' (C++ compiler) : /usr/bin/g++ Checking for 'gcc' (C compiler) : /usr/bin/gcc Checking for program 'bison' : /usr/bin/bison Checking for program 'flex' : /usr/bin/flex sys.platform : linux2 Checking for compiler flags -std=c++11 : yes Checking for compiler flags -O3 : yes Checking for compiler flags -Wno-deprecated : yes Checking for compiler flags -Wno-unknown-pragmas : yes Checking for compiler flags -Wno-unused-variable : yes Checking for compiler flags -Wno-unused-function : yes Checking for compiler flags -USTRICT_ANSI__ : yes Ibex will be built as a : static library Configuration of the library for interval arithmetic Library for interval arithmetic : gaol Using library mathlib/ultim from : 3rd/ subdirectory Starting installation of mathlib-2.1.0 Extracting mathlib-2.1.0.tar.gz : done Checking for program 'make' : /usr/bin/make Calling configure : done Calling make : done Calling install : done Checking for header MathLib.h : yes Checking for library ultim : yes Using library gaol from : 3rd/ subdirectory Starting installation of gaol-4.2.0 Extracting gaol-4.2.0.tar.gz : done Checking for program 'make' : /usr/bin/make Applying patch : gaol-4.2.0.all.all.patch Calling configure : done Calling make : done Calling install : done Checking for header gdtoa/gdtoa.h : yes Checking for library gdtoa : yes Checking for header gaol/gaol.h : no Checking for header gaol/gaol.h with -msse2 : no Checking for header gaol/gaol.h with -msse3 : yes Checking for header gaol/gaol_interval.h : yes Checking for library gaol : yes Configuration of the library for LP Library for LP : soplex Checking for header soplex.h : yes Checking for library ['soplex', 'z'] : yes Configuration of the plugins Configuration of the src directory Checking for compiler flags -USTRICT_ANSI__ : yes Configuration of the tests Checking for program 'pkg-config' : /usr/bin/pkg-config Checking for 'cppunit' : yes Load benchmarks module Checking for program 'gnuplot' : /usr/bin/gnuplot 'configure' finished successfully (1m35.992s)


Trace de install

./waf install Waf: Entering directory `/certis/3/neveub/RECHERCHE/ibex/ibex-2.8.9/ibex-2.8.9/build'

Waf: Leaving directory `/certis/3/neveub/RECHERCHE/ibex/ibex-2.8.9/ibex-2.8.9/build' Build failed

cyrilbouvier commented 4 years ago

C'est un bug de gcc présent jusqu'à la version 4.9 (https://stackoverflow.com/a/37108778)

La question est de savoir si Ibex doit être compatible avec des compilateurs qui ne sont plus supportés ? (cf "This release series is no longer supported." sur https://gcc.gnu.org/gcc-4.8/)

bneveu commented 4 years ago

Je n'arrive pas non plus à le compiler sur le serveur de Montpellier qui a un compilateur g++ en 4.8.5 Du coup, je ne sais pas sur quelle machine faire tourner cette version.

Est-ce vraiment difficile de revenir à une version compatible avec les anciennes versions de g++ ?

cyrilbouvier commented 4 years ago

Je n'arrive pas non plus à le compiler sur le serveur de Montpellier qui a un compilateur g++ en 4.8.5 Du coup, je ne sais pas sur quelle machine faire tourner cette version.

Sur la machine de Montpellier, d'autres versions de gcc sont disponibles. Pour cela il suffit de taper les commandes suivantes

module load cv-standard
module load gcc/<version>

<version> peut être 4.9.3, 5.3.0, 6.1.0, 7.5.0.

gchabert commented 4 years ago

Merci Cyril d'avoir regardé!

Est-ce vraiment difficile de revenir à une version compatible avec les anciennes versions de g++ ?

Bertrand, ça commence à vraiment dater la version 4 (2005!). Ça paraît raisonnable de demander une version de gcc plus récente.

gchabert commented 3 years ago

Bertrand, clôtures-tu ce ticket?

bneveu commented 3 years ago

oui