Numpy: Problème de compilation de numpy avec GCC 10.1

Créé le 28 mai 2020  ·  4Commentaires  ·  Source: numpy/numpy

En essayant de construire numpy localement, j'avais reçu l'erreur suivante:

gcc: numpy/core/src/common/mem_overlap.c
gcc -pthread -shared -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -fno-semantic-interposition -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now build/temp.linux-x86_64-3.8/numpy/core/src/multiarray/_multiarray_tests.o build/temp.linux-x86_64-3.8/numpy/core/src/common/mem_overlap.o -L/usr/lib -Lbuild/temp.linux-x86_64-3.8 -lnpymath -o numpy/core/_multiarray_tests.cpython-38-x86_64-linux-gnu.so
/usr/bin/ld: build/temp.linux-x86_64-3.8/numpy/core/src/common/mem_overlap.o:/home/ross/repos/numpy/numpy/core/include/numpy/ndarraytypes.h:1824: multiple definition of `PyArrayDTypeMeta_Type'; build/temp.linux-x86_64-3.8/numpy/core/src/multiarray/_multiarray_tests.o:/home/ross/repos/numpy/numpy/core/include/numpy/ndarraytypes.h:1824: first defined here
collect2: error: ld returned 1 exit status
error: Command "gcc -pthread -shared -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -fno-semantic-interposition -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now build/temp.linux-x86_64-3.8/numpy/core/src/multiarray/_multiarray_tests.o build/temp.linux-x86_64-3.8/numpy/core/src/common/mem_overlap.o -L/usr/lib -Lbuild/temp.linux-x86_64-3.8 -lnpymath -o numpy/core/_multiarray_tests.cpython-38-x86_64-linux-gnu.so" failed with exit status 1
`bisect`ing a identifié 1809a0fde comme la source du problème. Notez que cette erreur ne s'est produite pour moi qu'avec gcc 10.1. Aucun problème n'a été rencontré avec gcc 9.3. ### Exemple de code de reproduction :
$ git clone https://github.com/numpy/numpy.git
$ git checkout 1809a0fde
$ pip install -r test_requirements.txt
$ python setup.py build_ext -i
### Message d'erreur:
Journal de construction complet
 Exécution à partir du répertoire source numpy. 
 Sources cythonisantes 
 numpy/random/_bounded_integers.pxd.in n'a pas changé 
 Traitement numpy/random/mtrand.pyx 
 numpy/random/_common.pyx n'a pas changé 
 Traitement numpy/random/_mt19937.pyx 
 Traitement numpy/random/_pcg64.pyx 
 Traitement numpy/random/_generator.pyx 
 numpy/random/_bounded_integers.pyx n'a pas changé 
 numpy/random/_sfc64.pyx n'a pas changé 
 numpy/random/_philox.pyx n'a pas changé 
 numpy/random/bit_generator.pyx n'a pas changé 
 numpy/random/_bounded_integers.pyx.in n'a pas changé 
 numpy/core/setup.py:406 : MismatchCAPIWarning : non-concordance d'API détectée, les numéros de version de l'API C doivent être mis à jour. La version actuelle de l'api C est 13, avec la somme de contrôle 17a0f366e55ec05e5c5c149123478452, mais la somme de contrôle enregistrée pour la version 13 de l'API C dans core/codegen_dir/cversions.txt est 5b0e8bbded00b166125974fc71e80a33. Si des fonctions ont été ajoutées dans l'API C, vous devez mettre à jour C_API_VERSION dans numpy/core/setup_common.py. 
 check_api_version(C_API_VERSION, codegen_dir) 
 blas_opt_info :
 blas_mkl_info :
 personnaliser UnixCCompiler
 bibliothèques mkl_rt introuvables dans ['/home/ross/.virtualenvs/tmp/lib', '/usr/local/lib', '/usr/lib64', '/usr/lib', '/usr/lib/' ]
 INDISPONIBLE

 info_blis :
 bibliothèques blis introuvables dans ['/home/ross/.virtualenvs/tmp/lib', '/usr/local/lib', '/usr/lib64', '/usr/lib', '/usr/lib/' ]
 INDISPONIBLE

 openblas_info :
 Compilateur C : gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fno-semantic-interposition -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fPIC

 création de /tmp/tmpp_pb97eg/tmp
 création de /tmp/tmpp_pb97eg/tmp/tmpp_pb97eg
 options de compilation : '-c'
 gcc : /tmp/tmpp_pb97eg/source.c
 gcc -pthread /tmp/tmpp_pb97eg/tmp/tmpp_pb97eg/source.o -L/usr/lib64 -lopenblas -o /tmp/tmpp_pb97eg/a.out
 TROUVÉ:
 bibliothèques = ['openblas', 'openblas']
 répertoire_bibliothèque = ['/usr/lib64']
 langue = c
 define_macros = [('HAVE_CBLAS', Aucun)]

 TROUVÉ:
 bibliothèques = ['openblas', 'openblas']
 répertoire_bibliothèque = ['/usr/lib64']
 langue = c
 define_macros = [('HAVE_CBLAS', Aucun)]

 chemin inexistant dans 'numpy/distutils' : 'site.cfg'
 lapack_opt_info :
 lapack_mkl_info :
 bibliothèques mkl_rt introuvables dans ['/home/ross/.virtualenvs/tmp/lib', '/usr/local/lib', '/usr/lib64', '/usr/lib', '/usr/lib/' ]
 INDISPONIBLE

 openblas_lapack_info :
 Compilateur C : gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fno-semantic-interposition -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fPIC

 création de /tmp/tmpeicqr4ho/tmp
 création de /tmp/tmpeicqr4ho/tmp/tmpeicqr4ho
 options de compilation : '-c'
 gcc : /tmp/tmpeicqr4ho/source.c
 gcc -pthread /tmp/tmpeicqr4ho/tmp/tmpeicqr4ho/source.o -L/usr/lib64 -lopenblas -o /tmp/tmpeicqr4ho/a.out
 /usr/bin/ld : /tmp/tmpeicqr4ho/tmp/tmpeicqr4ho/source.o : dans la fonction 'main' :
 /tmp/tmpeicqr4ho/source.c:4 : référence non définie à `zungqr_'
 collect2 : erreur : ld a renvoyé 1 état de sortie
 INDISPONIBLE

 openblas_clapack_info :
 bibliothèques openblas,lapack introuvables dans ['/home/ross/.virtualenvs/tmp/lib', '/usr/local/lib', '/usr/lib64', '/usr/lib', '/usr/lib /']
 INDISPONIBLE

 flamme_info :
 bibliothèques flamme introuvable dans ['/home/ross/.virtualenvs/tmp/lib', '/usr/local/lib', '/usr/lib64', '/usr/lib', '/usr/lib/' ]
 INDISPONIBLE

 atlas_3_10_threads_info :
 Réglage PTATLAS=ATLAS
 bibliothèques lapack_atlas introuvables dans /home/ross/.virtualenvs/tmp/lib
 bibliothèques tatlas,tatlas introuvables dans /home/ross/.virtualenvs/tmp/lib
 bibliothèques lapack_atlas introuvables dans /usr/local/lib
 bibliothèques tatlas,tatlas introuvables dans /usr/local/lib
 bibliothèques lapack_atlas introuvables dans /usr/lib64
 bibliothèques tatlas,tatlas introuvables dans /usr/lib64
 bibliothèques lapack_atlas introuvables dans /usr/lib
 bibliothèques tatlas,tatlas introuvables dans /usr/lib
 bibliothèques lapack_atlas introuvables dans /usr/lib/
 bibliothèques tatlas,tatlas introuvables dans /usr/lib/

 INDISPONIBLE

 atlas_3_10_info :
 bibliothèques lapack_atlas introuvables dans /home/ross/.virtualenvs/tmp/lib
 bibliothèques satlas, satlas introuvable dans /home/ross/.virtualenvs/tmp/lib
 bibliothèques lapack_atlas introuvables dans /usr/local/lib
 bibliothèques satlas, satlas introuvable dans /usr/local/lib
 bibliothèques lapack_atlas introuvables dans /usr/lib64
 bibliothèques satlas, satlas introuvable dans /usr/lib64
 bibliothèques lapack_atlas introuvables dans /usr/lib
 bibliothèques satlas, satlas introuvable dans /usr/lib
 bibliothèques lapack_atlas introuvables dans /usr/lib/
 bibliothèques satlas, satlas introuvable dans /usr/lib/

 INDISPONIBLE

 atlas_threads_info :
 Réglage PTATLAS=ATLAS
 bibliothèques lapack_atlas introuvables dans /home/ross/.virtualenvs/tmp/lib
 bibliothèques ptf77blas,ptcblas,atlas introuvables dans /home/ross/.virtualenvs/tmp/lib
 bibliothèques lapack_atlas introuvables dans /usr/local/lib
 bibliothèques ptf77blas,ptcblas,atlas introuvables dans /usr/local/lib
 bibliothèques lapack_atlas introuvables dans /usr/lib64
 bibliothèques ptf77blas,ptcblas,atlas introuvables dans /usr/lib64
 bibliothèques lapack_atlas introuvables dans /usr/lib
 bibliothèques ptf77blas,ptcblas,atlas introuvables dans /usr/lib
 bibliothèques lapack_atlas introuvables dans /usr/lib/
 bibliothèques ptf77blas,ptcblas,atlas introuvables dans /usr/lib/

 INDISPONIBLE

 info_atlas :
 bibliothèques lapack_atlas introuvables dans /home/ross/.virtualenvs/tmp/lib
 bibliothèques f77blas,cblas,atlas introuvables dans /home/ross/.virtualenvs/tmp/lib
 bibliothèques lapack_atlas introuvables dans /usr/local/lib
 bibliothèques f77blas,cblas,atlas introuvables dans /usr/local/lib
 bibliothèques lapack_atlas introuvables dans /usr/lib64
 bibliothèques f77blas,cblas,atlas introuvables dans /usr/lib64
 bibliothèques lapack_atlas introuvables dans /usr/lib
 bibliothèques f77blas,cblas,atlas introuvables dans /usr/lib
 bibliothèques lapack_atlas introuvables dans /usr/lib/
 bibliothèques f77blas,cblas,atlas introuvables dans /usr/lib/

 INDISPONIBLE

 accélérer_info :
 INDISPONIBLE

 lapack_info :
 bibliothèques lapack introuvables dans ['/home/ross/.virtualenvs/tmp/lib', '/usr/local/lib', '/usr/lib64', '/usr/lib', '/usr/lib/' ]
 INDISPONIBLE

 /home/ross/repos/numpy/numpy/distutils/system_info.py:1748 : Avertissement utilisateur : 
 Bibliothèques Lapack (http://www.netlib.org/lapack/) introuvables.
 Les répertoires de recherche des bibliothèques peuvent être spécifiés dans le
 numpy/distutils/site.cfg (section [lapack]) ou en définissant
 la variable d'environnement LAPACK.
 return getattr(self, '_calc_info_{}'.format(name))()
 lapack_src_info :
 INDISPONIBLE

 /home/ross/repos/numpy/numpy/distutils/system_info.py:1748 : Avertissement utilisateur : 
 Sources de Lapack (http://www.netlib.org/lapack/) introuvables.
 Les répertoires de recherche des sources peuvent être spécifiés dans le
 numpy/distutils/site.cfg (section [lapack_src]) ou en définissant
 la variable d'environnement LAPACK_SRC.
 return getattr(self, '_calc_info_{}'.format(name))()
 INDISPONIBLE

 numpy_linalg_lapack_lite :
 TROUVÉ:
 langue = c
 define_macros = [('HAVE_BLAS_ILP64', Aucun), ('BLAS_SYMBOL_SUFFIX', '64_')]

 chemin inexistant dans 'numpy/random' : '{gen}.pxd'
 chemin inexistant dans 'numpy/random' : '{gen}.pxd'
 /usr/lib/python3.8/distutils/dist.py:274 : UserWarning : option de distribution inconnue : 'define_macros'
 warnings.warn(msg)
 exécuter build_ext
 exécuter build_src
 build_src
 construire des sources py_modules
 construire des sources "npymath" de la bibliothèque
 en ajoutant 'numpy/core/src/npymath' à include_dirs.
 Aucun - rien fait avec h_files = ['numpy/core/src/npymath/npy_math_internal.h']
 bibliothèque de construction des sources "npysort"
 en ajoutant 'numpy/core/src/common' à include_dirs.
 Aucun - rien fait avec h_files = ['numpy/core/src/common/npy_sort.h', 'numpy/core/src/common/npy_partition.h', 'numpy/core/src/common/npy_binsearch.h']
 bibliothèque de construction sources "npyrandom"
 construction des sources de l'extension "numpy.core._multiarray_tests"
 conv_template:> numpy/core/src/multiarray/_multiarray_tests.c
 sources de l'extension de construction "numpy.core._multiarray_umath"
 modèle_conv :> numpy/core/src/multiarray/arraytypes.c
 modèle_conv :> numpy/core/src/multiarray/einsum.c
 conv_template :> numpy/core/src/multiarray/lowlevel_strided_loops.c
 conv_template :> numpy/core/src/multiarray/nditer_templ.c
 modèle_conv :> numpy/core/src/multiarray/scalartypes.c
 modèle_conv :> numpy/core/src/umath/funcs.inc
 en ajoutant 'numpy/core/src/umath' à include_dirs.
 modèle_conv :> numpy/core/src/umath/simd.inc
 modèle_conv :> numpy/core/src/umath/loops.h
 modèle_conv :> numpy/core/src/umath/loops.c
 modèle_conv :> numpy/core/src/umath/matmul.h
 modèle_conv :> numpy/core/src/umath/matmul.c
 modèle_conv :> numpy/core/src/umath/clip.h
 modèle_conv :> numpy/core/src/umath/clip.c
 modèle_conv :> numpy/core/src/umath/scalarmath.c
 modèle_conv :> numpy/core/src/npymath/npy_math_internal.h
 en ajoutant 'numpy/core/src/npymath' à include_dirs.
 modèle_conv :> numpy/core/src/npymath/ieee754.c
 modèle_conv :> numpy/core/src/npymath/npy_math_complex.c
 modèle_conv :> numpy/core/src/common/templ_common.h
 en ajoutant 'numpy/core/src/common' à include_dirs.
 modèle_conv :> numpy/core/src/common/npy_cpu_features.c
 numpy.core - rien fait avec h_files = ['numpy/core/src/umath/funcs.inc', 'numpy/core/src/umath/simd.inc', 'numpy/core/src/umath/loops.h ', 'numpy/core/src/umath/matmul.h', 'numpy/core/src/umath/clip.h', 'numpy/core/src/npymath/npy_math_internal.h', 'numpy/core/src /common/templ_common.h', 'numpy/core/include/numpy/config.h', 'numpy/core/include/numpy/_numpyconfig.h', 'numpy/core/include/numpy/__multiarray_api.h', 'numpy/core/include/numpy/__ufunc_api.h']
 sources de l'extension de construction "numpy.core._umath_tests"
 sources de l'extension de construction "numpy.core._rational_tests"
 sources de l'extension de construction "numpy.core._struct_ufunc_tests"
 sources de l'extension de construction "numpy.core._operand_flag_tests"
 sources de l'extension de bâtiment "numpy.fft._pocketfft_internal"
 sources de l'extension de construction "numpy.linalg.lapack_lite"
 ### Avertissement : Utilisation de lapack non optimisé ###
 extension de bâtiment "numpy.linalg._umath_linalg" sources
 ### Avertissement : Utilisation de lapack non optimisé ###
 extension de bâtiment "numpy.random._mt19937" sources
 sources de l'extension de bâtiment "numpy.random._philox"
 sources de l'extension de construction "numpy.random._pcg64"
 sources de l'extension de bâtiment "numpy.random._sfc64"
 sources de l'extension de bâtiment "numpy.random._common"
 sources de l'extension de bâtiment "numpy.random.bit_generator"
 sources de l'extension de bâtiment "numpy.random._generator"
 sources de l'extension de construction "numpy.random._bounded_integers"
 sources de l'extension de bâtiment "numpy.random.mtrand"
 création de sources data_files
 build_src : création de fichiers de configuration npy-pkg
 personnaliser UnixCCompiler
 personnaliser UnixCCompiler en utilisant new_build_clib
 construction de la bibliothèque 'npymath'
 compilation de sources C
 Compilateur C : gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fno-semantic-interposition -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fPIC

 options de compilation : '-Inumpy/core/src/npymath -Inumpy/core/include -Inumpy/core/include/numpy -Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src /npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/home/ross/.virtualenvs/tmp/include -I/usr/include/python3.8 - Inumpy/core/src/common -Inumpy/core/src/npymath -c'
 options supplémentaires : '-std=c99'
 gcc: numpy/core/src/npymath/halffloat.c
 gcc : numpy/core/src/npymath/npy_math.c
 gcc : numpy/core/src/npymath/npy_math_complex.c
 gcc : numpy/core/src/npymath/ieee754.c
 ar : ajout de 4 fichiers objets à build/temp.linux-x86_64-3.8/libnpymath.a
 construction de la bibliothèque 'npyrandom'
 compilation de sources C
 Compilateur C : gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fno-semantic-interposition -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fPIC

 options de compilation : '-Inumpy/core/include -Inumpy/core/include/numpy -Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src /multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/home/ross/.virtualenvs/tmp/include -I/usr/include/python3.8 -Inumpy/core/src/common - Inumpy/core/src/npymath -c'
 options supplémentaires : '-std=c99'
 gcc: numpy/random/src/distributions/distributions.c
 gcc : numpy/random/src/distributions/random_mvhg_count.c
 gcc : numpy/random/src/distributions/random_mvhg_marginals.c
 gcc: numpy/random/src/distributions/random_hypergeometric.c
 ar : ajout de 5 fichiers objets à build/temp.linux-x86_64-3.8/libnpyrandom.a
 personnaliser UnixCCompiler
 personnaliser UnixCCompiler en utilisant new_build_ext
 construction de l'extension 'numpy.core._multiarray_tests'
 compilation de sources C
 Compilateur C : gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fno-semantic-interposition -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fPIC

 options de compilation : '-DNPY_INTERNAL_BUILD=1 -DHAVE_NPY_CONFIG_H=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -Inumpy/core/include -Inumpy/core/include/numpy -Inumpy/core/src/common -Inumpy/core /src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/home/ross/.virtualenvs/tmp/ include -I/usr/include/python3.8 -Inumpy/core/src/common -Inumpy/core/src/npymath -c'
 options supplémentaires : '-std=c99'
 gcc : numpy/core/src/common/mem_overlap.c
 gcc : numpy/core/src/multiarray/_multiarray_tests.c
 gcc -pthread -shared -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -fno-semantic-interposition -Wl,-O1,--sort-common, --as-needed,-z,relro,-z, maintenant build/temp.linux-x86_64-3.8/numpy/core/src/multiarray/_multiarray_tests.o build/temp.linux-x86_64-3.8/numpy/core/ src/common/mem_overlap.o -L/usr/lib -Lbuild/temp.linux-x86_64-3.8 -lnpymath -o numpy/core/_multiarray_tests.cpython-38-x86_64-linux-gnu.so
 /usr/bin/ld : build/temp.linux-x86_64-3.8/numpy/core/src/common/mem_overlap.o :/home/ross/repos/numpy/numpy/core/include/numpy/ndarraytypes.h : 1825 : définition multiple de 'PyArrayDTypeMeta_Type' ; build/temp.linux-x86_64-3.8/numpy/core/src/multiarray/_multiarray_tests.o:/home/ross/repos/numpy/numpy/core/include/numpy/ndarraytypes.h:1825 : défini pour la première fois ici
 collect2 : erreur : ld a renvoyé 1 état de sortie
 erreur : Commande "gcc -pthread -shared -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -fno-semantic-interposition -Wl,-O1,-- sort-common,--as-needed,-z,relro,-z,maintenant build/temp.linux-x86_64-3.8/numpy/core/src/multiarray/_multiarray_tests.o build/temp.linux-x86_64-3.8/ numpy/core/src/common/mem_overlap.o -L/usr/lib -Lbuild/temp.linux-x86_64-3.8 -lnpymath -o numpy/core/_multiarray_tests.cpython-38-x86_64-linux-gnu.so" a échoué avec état de sortie 1

Informations sur la version Numpy/Python :

Version Python : 3.8.3
Version NumPy : 1809a0fde
Version GCC : 10.1

00 - Bug build

Commentaire le plus utile

L'erreur est un extern manquant sur la déclaration, gh-16435 devrait le corriger, Ross l'a testé pour moi.

Tous les 4 commentaires

Je suppose que ces définitions ne sont probablement pas strictement acceptables (maintenant que vous le notez, l'analyse statique de clang me donne également quelques avertissements à ce sujet). Ils doivent probablement être déplacés vers les fichiers d'en-tête spécifiques jusqu'à ce que nous les rendions publics ?

Je vois ça aussi, gcc 10.1.1. J'ai mis à jour mon système d'exploitation hier soir, il y a toujours des problèmes après...

je vois ça avec

jupiter<strong i="6">@23</strong>:06  ➤  gcc --version
gcc (GCC) 10.1.0
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

L'erreur est un extern manquant sur la déclaration, gh-16435 devrait le corriger, Ross l'a testé pour moi.

Cette page vous a été utile?
0 / 5 - 0 notes