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: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
Versión de Python: 3.8.3
Versión de NumPy: 1809a0fde
Versión de GCC: 10.1
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í.
Comentario más útil
El error es un
extern
faltante en la declaración, gh-16435 debería solucionarlo, Ross lo probó por mí.