Numpy: Problema al compilar numpy con GCC 10.1

Creado en 28 may. 2020  ·  4Comentarios  ·  Fuente: numpy/numpy

Al intentar compilar numpy localmente, recibí el siguiente error:

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 identificó 1809a0fde como la fuente del problema. Tenga en cuenta que este error solo me ocurrió con gcc 10.1. No se encontraron problemas con gcc 9.3. ### Ejemplo de código de reproducción:
$ git clone https://github.com/numpy/numpy.git
$ git checkout 1809a0fde
$ pip install -r test_requirements.txt
$ python setup.py build_ext -i
### Mensaje de error:
Registro de compilación completo
 Ejecutando desde el directorio de origen numpy. 
 Fuentes de cythonizing 
 numpy / random / _bounded_integers.pxd.in no ha cambiado 
 Procesando numpy / random / mtrand.pyx 
 numpy / random / _common.pyx no ha cambiado 
 Procesando numpy / random / _mt19937.pyx 
 Procesando numpy / random / _pcg64.pyx 
 Procesando numpy / random / _generator.pyx 
 numpy / random / _bounded_integers.pyx no ha cambiado 
 numpy / random / _sfc64.pyx no ha cambiado 
 numpy / random / _philox.pyx no ha cambiado 
 numpy / random / bit_generator.pyx no ha cambiado 
 numpy / random / _bounded_integers.pyx.in no ha cambiado 
 numpy / core / setup.py: 406: MismatchCAPIWarning: Se detectó una discordancia de API, los números de versión de API C deben actualizarse. La versión actual de la API C es 13, con la suma de comprobación 17a0f366e55ec05e5c5c149123478452, pero la suma de comprobación registrada para la versión 13 de la API C en core / codegen_dir / cversions.txt es 5b0e8bbded00b166125974fc71e80a33. Si se agregaron funciones en la API de C, debe actualizar C_API_VERSION en numpy / core / setup_common.py. 
 check_api_version (C_API_VERSION, codegen_dir) 
 blas_opt_info:
 blas_mkl_info:
 personalizar UnixCCompiler
 bibliotecas mkl_rt no encontradas en ['/home/ross/.virtualenvs/tmp/lib', '/ usr / local / lib', '/ usr / lib64', '/ usr / lib', '/ usr / lib /' ]
 NO DISPONIBLE

 blis_info:
 bibliotecas blis no encontradas en ['/home/ross/.virtualenvs/tmp/lib', '/ usr / local / lib', '/ usr / lib64', '/ usr / lib', '/ usr / lib /' ]
 NO DISPONIBLE

 openblas_info:
 Compilador de 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 = genérico -O3 -pipe -fno-plt -march = x86-64 -mtune = generic -O3 -pipe -fno-plt -fPIC

 creando / tmp / tmpp_pb97eg / tmp
 creando / tmp / tmpp_pb97eg / tmp / tmpp_pb97eg
 opciones de compilación: '-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
 ENCONTRÓ:
 bibliotecas = ['openblas', 'openblas']
 library_dirs = ['/ usr / lib64']
 idioma = c
 define_macros = [('HAVE_CBLAS', Ninguno)]

 ENCONTRÓ:
 bibliotecas = ['openblas', 'openblas']
 library_dirs = ['/ usr / lib64']
 idioma = c
 define_macros = [('HAVE_CBLAS', Ninguno)]

 ruta no existente en 'numpy / distutils': 'site.cfg'
 lapack_opt_info:
 lapack_mkl_info:
 bibliotecas mkl_rt no encontradas en ['/home/ross/.virtualenvs/tmp/lib', '/ usr / local / lib', '/ usr / lib64', '/ usr / lib', '/ usr / lib /' ]
 NO DISPONIBLE

 openblas_lapack_info:
 Compilador de 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 = genérico -O3 -pipe -fno-plt -march = x86-64 -mtune = generic -O3 -pipe -fno-plt -fPIC

 creando / tmp / tmpeicqr4ho / tmp
 creando / tmp / tmpeicqr4ho / tmp / tmpeicqr4ho
 opciones de compilación: '-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: en la función `main ':
 /tmp/tmpeicqr4ho/source.c:4: referencia indefinida a `zungqr_ '
 collect2: error: ld devolvió 1 estado de salida
 NO DISPONIBLE

 openblas_clapack_info:
 bibliotecas openblas, lapack no encontradas en ['/home/ross/.virtualenvs/tmp/lib', '/ usr / local / lib', '/ usr / lib64', '/ usr / lib', '/ usr / lib / ']
 NO DISPONIBLE

 flame_info:
 bibliotecas flame no encontradas en ['/home/ross/.virtualenvs/tmp/lib', '/ usr / local / lib', '/ usr / lib64', '/ usr / lib', '/ usr / lib /' ]
 NO DISPONIBLE

 atlas_3_10_threads_info:
 Configuración de PTATLAS = ATLAS
 bibliotecas lapack_atlas no encontradas en /home/ross/.virtualenvs/tmp/lib
 bibliotecas tatlas, tatlas no se encuentran en /home/ross/.virtualenvs/tmp/lib
 bibliotecas lapack_atlas no encontradas en / usr / local / lib
 bibliotecas tatlas, tatlas no se encuentran en / usr / local / lib
 bibliotecas lapack_atlas no encontradas en / usr / lib64
 bibliotecas tatlas, tatlas no se encuentran en / usr / lib64
 bibliotecas lapack_atlas no encontradas en / usr / lib
 bibliotecas tatlas, tatlas no se encuentran en / usr / lib
 bibliotecas lapack_atlas no encontradas en / usr / lib /
 bibliotecas tatlas, tatlas no se encuentran en / usr / lib /

 NO DISPONIBLE

 atlas_3_10_info:
 bibliotecas lapack_atlas no encontradas en /home/ross/.virtualenvs/tmp/lib
 bibliotecas satlas, satlas no se encuentran en /home/ross/.virtualenvs/tmp/lib
 bibliotecas lapack_atlas no encontradas en / usr / local / lib
 bibliotecas satlas, satlas no se encuentran en / usr / local / lib
 bibliotecas lapack_atlas no encontradas en / usr / lib64
 bibliotecas satlas, satlas no se encuentran en / usr / lib64
 bibliotecas lapack_atlas no encontradas en / usr / lib
 bibliotecas satlas, satlas no se encuentran en / usr / lib
 bibliotecas lapack_atlas no encontradas en / usr / lib /
 bibliotecas satlas, satlas no se encuentran en / usr / lib /

 NO DISPONIBLE

 atlas_threads_info:
 Configuración de PTATLAS = ATLAS
 bibliotecas lapack_atlas no encontradas en /home/ross/.virtualenvs/tmp/lib
 bibliotecas ptf77blas, ptcblas, atlas no se encuentran en /home/ross/.virtualenvs/tmp/lib
 bibliotecas lapack_atlas no encontradas en / usr / local / lib
 bibliotecas ptf77blas, ptcblas, atlas no se encuentran en / usr / local / lib
 bibliotecas lapack_atlas no encontradas en / usr / lib64
 bibliotecas ptf77blas, ptcblas, atlas no se encuentran en / usr / lib64
 bibliotecas lapack_atlas no encontradas en / usr / lib
 bibliotecas ptf77blas, ptcblas, atlas no se encuentran en / usr / lib
 bibliotecas lapack_atlas no encontradas en / usr / lib /
 bibliotecas ptf77blas, ptcblas, atlas no se encuentran en / usr / lib /

 NO DISPONIBLE

 atlas_info:
 bibliotecas lapack_atlas no encontradas en /home/ross/.virtualenvs/tmp/lib
 bibliotecas f77blas, cblas, atlas no se encuentran en /home/ross/.virtualenvs/tmp/lib
 bibliotecas lapack_atlas no encontradas en / usr / local / lib
 bibliotecas f77blas, cblas, atlas no se encuentran en / usr / local / lib
 bibliotecas lapack_atlas no encontradas en / usr / lib64
 bibliotecas f77blas, cblas, atlas no se encuentran en / usr / lib64
 bibliotecas lapack_atlas no encontradas en / usr / lib
 bibliotecas f77blas, cblas, atlas no se encuentran en / usr / lib
 bibliotecas lapack_atlas no encontradas en / usr / lib /
 bibliotecas f77blas, cblas, atlas no se encuentran en / usr / lib /

 NO DISPONIBLE

 Acelerar_info:
 NO DISPONIBLE

 lapack_info:
 bibliotecas lapack no encontradas en ['/home/ross/.virtualenvs/tmp/lib', '/ usr / local / lib', '/ usr / lib64', '/ usr / lib', '/ usr / lib /' ]
 NO DISPONIBLE

 /home/ross/repos/numpy/numpy/distutils/system_info.py:1748: UserWarning: 
 Bibliotecas de Lapack (http://www.netlib.org/lapack/) no encontradas.
 Los directorios para buscar las bibliotecas se pueden especificar en el
 numpy / distutils / site.cfg (sección [lapack]) o configurando
 la variable de entorno LAPACK.
 return getattr (self, '_calc_info _ {}'. format (nombre)) ()
 lapack_src_info:
 NO DISPONIBLE

 /home/ross/repos/numpy/numpy/distutils/system_info.py:1748: UserWarning: 
 Fuentes de Lapack (http://www.netlib.org/lapack/) no encontradas.
 Los directorios para buscar las fuentes se pueden especificar en el
 numpy / distutils / site.cfg (sección [lapack_src]) o configurando
 la variable de entorno LAPACK_SRC.
 return getattr (self, '_calc_info _ {}'. format (nombre)) ()
 NO DISPONIBLE

 numpy_linalg_lapack_lite:
 ENCONTRÓ:
 idioma = c
 define_macros = [('HAVE_BLAS_ILP64', Ninguno), ('BLAS_SYMBOL_SUFFIX', '64_')]

 ruta no existente en 'numpy / random': '{gen} .pxd'
 ruta no existente en 'numpy / random': '{gen} .pxd'
 /usr/lib/python3.8/distutils/dist.py:274: UserWarning: opción de distribución desconocida: 'define_macros'
 warnings.warn (msg)
 ejecutando build_ext
 ejecutando build_src
 build_src
 construyendo fuentes py_modules
 creación de fuentes de biblioteca "npymath"
 agregando 'numpy / core / src / npymath' a include_dirs.
 Ninguno: no se ha hecho nada con h_files = ['numpy / core / src / npymath / npy_math_internal.h']
 creación de fuentes de biblioteca "npysort"
 agregando 'numpy / core / src / common' a include_dirs.
 Ninguno: no se ha hecho nada con h_files = ['numpy / core / src / common / npy_sort.h', 'numpy / core / src / common / npy_partition.h', 'numpy / core / src / common / npy_binsearch.h']
 creación de fuentes "npyrandom" de la biblioteca
 creación de fuentes de extensión "numpy.core._multiarray_tests"
 conv_template:> numpy / core / src / multiarray / _multiarray_tests.c
 creación de fuentes de extensión "numpy.core._multiarray_umath"
 conv_template:> numpy / core / src / multiarray / arraytypes.c
 conv_template:> 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
 conv_template:> numpy / core / src / multiarray / scalartypes.c
 conv_template:> numpy / core / src / umath / funcs.inc
 agregando 'numpy / core / src / umath' a include_dirs.
 conv_template:> numpy / core / src / umath / simd.inc
 conv_template:> numpy / core / src / umath / loops.h
 conv_template:> numpy / core / src / umath / loops.c
 conv_template:> numpy / core / src / umath / matmul.h
 conv_template:> numpy / core / src / umath / matmul.c
 conv_template:> numpy / core / src / umath / clip.h
 conv_template:> numpy / core / src / umath / clip.c
 conv_template:> numpy / core / src / umath / scalarmath.c
 conv_template:> numpy / core / src / npymath / npy_math_internal.h
 agregando 'numpy / core / src / npymath' a include_dirs.
 conv_template:> numpy / core / src / npymath / ieee754.c
 conv_template:> numpy / core / src / npymath / npy_math_complex.c
 conv_template:> numpy / core / src / common / templ_common.h
 agregando 'numpy / core / src / common' a include_dirs.
 conv_template:> numpy / core / src / common / npy_cpu_features.c
 numpy.core: no se hace nada con 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']
 creación de fuentes de extensión "numpy.core._umath_tests"
 creación de fuentes de extensión "numpy.core._rational_tests"
 creación de fuentes de extensión "numpy.core._struct_ufunc_tests"
 creación de fuentes de extensión "numpy.core._operand_flag_tests"
 creación de fuentes de extensión "numpy.fft._pocketfft_internal"
 creación de fuentes de extensión "numpy.linalg.lapack_lite"
 ### Advertencia: Uso de lapack no optimizado ###
 construcción de fuentes de extensión "numpy.linalg._umath_linalg"
 ### Advertencia: Uso de lapack no optimizado ###
 fuentes de la extensión de construcción "numpy.random._mt19937"
 creación de fuentes de extensión "numpy.random._philox"
 creación de fuentes de extensión "numpy.random._pcg64"
 creación de fuentes de extensión "numpy.random._sfc64"
 creación de fuentes de extensión "numpy.random._common"
 creación de fuentes de extensión "numpy.random.bit_generator"
 creación de fuentes de extensión "numpy.random._generator"
 creación de fuentes de extensión "numpy.random._bounded_integers"
 creación de fuentes de extensión "numpy.random.mtrand"
 construyendo fuentes de data_files
 build_src: creación de archivos de configuración npy-pkg
 personalizar UnixCCompiler
 personalizar UnixCCompiler usando new_build_clib
 construyendo la biblioteca 'npymath'
 compilar fuentes C
 Compilador de 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 = genérico -O3 -pipe -fno-plt -march = x86-64 -mtune = generic -O3 -pipe -fno-plt -fPIC

 opciones de compilación: '-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 '
 opciones adicionales: '-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: agregando 4 archivos de objeto para construir / temp.linux-x86_64-3.8 / libnpymath.a
 construyendo biblioteca 'npyrandom'
 compilar fuentes C
 Compilador de 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 = genérico -O3 -pipe -fno-plt -march = x86-64 -mtune = generic -O3 -pipe -fno-plt -fPIC

 opciones de compilación: '-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 '
 opciones adicionales: '-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: agregando 5 archivos de objeto para construir / temp.linux-x86_64-3.8 / libnpyrandom.a
 personalizar UnixCCompiler
 personalizar UnixCCompiler usando new_build_ext
 construyendo la extensión 'numpy.core._multiarray_tests'
 compilar fuentes C
 Compilador de 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 = genérico -O3 -pipe -fno-plt -march = x86-64 -mtune = generic -O3 -pipe -fno-plt -fPIC

 opciones de compilación: '-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 / coreInump / incluir / src -Inumpy / core -Inumpy / core / src / npymath -Inumpy / core / src / multiarray -Inumpy / core / src / umath -Inumpy / core / src / npysort -I / home / ross / .virtualenvs / tmp / incluir -I / usr / include / python3.8 -Inumpy / core / src / common -Inumpy / core / src / npymath -c '
 opciones adicionales: '-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, - según sea necesario, -z, relro, -z, ahora -fno-semantic-interposition -Wl, -O1, - sort-common, - según sea necesario, -z, relro, -z, ahora compila / 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: definición múltiple 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: primero definido aquí
 collect2: error: ld devolvió 1 estado de salida
 error: Comando "gcc -pthread -shared -Wl, -O1, - sort-common, - según sea necesario, -z, relro, -z, ahora -fno-semantic-interposition -Wl, -O1, - sort-common, - según sea necesario, -z, relro, -z, ahora 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 "falló con estado de salida 1

Información de la versión de Numpy / Python:

Versión de Python: 3.8.3
Versión de NumPy: 1809a0fde
Versión de GCC: 10.1

00 - Bug build

Comentario más útil

El error es un extern faltante en la declaración, gh-16435 debería solucionarlo, Ross lo probó por mí.

Todos 4 comentarios

Supongo que esas definiciones probablemente no sean estrictamente correctas para estar allí (ahora que lo nota, el análisis estático de clang también me está dando algunas advertencias al respecto). Probablemente deban moverse a los archivos de encabezado específicos hasta que los hagamos públicos.

Yo también veo eso, gcc 10.1.1. Actualicé mi sistema operativo anoche, siempre hay problemas después de ...

Estoy viendo esto con

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.

El error es un extern faltante en la declaración, gh-16435 debería solucionarlo, Ross lo probó por mí.

¿Fue útil esta página
0 / 5 - 0 calificaciones