Procédure de compilation :
./autogen.sh
cd ..
mkdir build
cd build
../rpl/configure --enable-native --enable-rplcas
Et attendre l'erreur :
g++ -g -O2 -mtune=native -march=native -O2 -malign-double -Wall
-funsigned-char -fpermissive -fno-strict-aliasing
-DGIAC_GENERIC_CONSTANTS -pthread -o icas icas.o
/export/home/bertrand/gopher/rpl2/build-amd64/rplcas/giac-1.5.0/src/.libs/libgiac.a
/import/home/bertrand/gopher/rpl2/build-amd64/rplcas/lib/libpari.a
/import/home/bertrand/gopher/rpl2/build-amd64/rplcas/lib/ntl.a
/import/home/bertrand/gopher/rpl2/build-amd64/rplcas/lib/libcocoa.a
/import/home/bertrand/gopher/rpl2/build-amd64/tools/gsl-2.6/.libs/libgsl.a
/import/home/bertrand/gopher/rpl2/build-amd64/rplcas/lib/libgmp.a
/import/home/bertrand/gopher/rpl2/build-amd64/rplcas/lib/libmpfr.a
/import/home/bertrand/gopher/rpl2/build-amd64/rplcas/lib/libmpfi.a
./.libs/libxcas.a
/export/home/bertrand/gopher/rpl2/build-amd64/rplcas/giac-1.5.0/src/.libs/libgiac.a
-lrt -lpthread /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so -lsamplerate
-llapack -lblas -lgfortran -ldl -lpng16 -lm -pthread
/usr/bin/ld:
/import/home/bertrand/gopher/rpl2/build-amd64/rplcas/lib/libmpfr.a(get_z_exp.o):
référence au symbole non défini « __gmpz_realloc2 »
/usr/bin/ld : /usr/lib/x86_64-linux-gnu/libgmp.so.10 : erreur lors de
l'ajout de symboles : DSO manquant dans la ligne de commande
collect2: error: ld returned 1 exit status
Pour un certain nombre de raisons, les bibliothèques sont compilées
statiquement (ça permet de ne pas segfaulter lorsque l'on charge des
modules externes).
L'erreur varie en fonction de l'ordre des bibliothèques. Avec gcc 8, ça
compile sans problème.
mpfr est configuré comme suit :
../../../rpl/rplcas/mpfr-4.0.2/configure
--with-gmp=/import/home/bertrand/gopher/rpl2/build-amd64/rplcas
--disable-shared --enable-static
--prefix=/import/home/bertrand/gopher/rpl2/build-amd64/rplcas
et le script configure trouve bien les en-têtes et la version statique
de libgmp.
Naturellement, le symbole non trouvé est bien présent dans la
bibliothèque libgmp.a :
rayleigh:[~/gopher/rpl2/build-amd64/rplcas/lib] > nm -a libgmp.a | grep
__gmpz_realloc2
0000000000000000 T __gmpz_realloc2
J'avoue que je ne sais plus où chercher. Toute idée est la bienvenue.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
BERTRAND Jo=c3=abl
Je me réponds à moi-même. Le problème provient à la fois de binutils et d'automake. Binutils parce que le linker est beaucoup plus tatillons sur l'ordre des bibliothèques quand elles sont réentrantes. Et automake, parce que celui-ci gère l'ordre des bibliothèques un peu comme il le décide (l'ordre des bibliothèques sur la ligne de commande change entre debian/stable et debian/testing, je n'ai pas encore compris pourquoi). JKB
Je me réponds à moi-même. Le problème provient à la fois de binutils et
d'automake.
Binutils parce que le linker est beaucoup plus tatillons sur l'ordre
des bibliothèques quand elles sont réentrantes. Et automake, parce que
celui-ci gère l'ordre des bibliothèques un peu comme il le décide
(l'ordre des bibliothèques sur la ligne de commande change entre
debian/stable et debian/testing, je n'ai pas encore compris pourquoi).
Je me réponds à moi-même. Le problème provient à la fois de binutils et d'automake. Binutils parce que le linker est beaucoup plus tatillons sur l'ordre des bibliothèques quand elles sont réentrantes. Et automake, parce que celui-ci gère l'ordre des bibliothèques un peu comme il le décide (l'ordre des bibliothèques sur la ligne de commande change entre debian/stable et debian/testing, je n'ai pas encore compris pourquoi). JKB