Numpy: Problema ao compilar numpy com GCC 10.1

Criado em 28 mai. 2020  ·  4Comentários  ·  Fonte: numpy/numpy

Ao tentar construir um numpy localmente, recebi o seguinte erro:

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 identificou 1809a0fde como a fonte do problema. Observe que esse erro ocorreu apenas para mim com o gcc 10.1. Nenhum problema foi encontrado com o gcc 9.3. ### Reproduzindo exemplo de código:
$ git clone https://github.com/numpy/numpy.git
$ git checkout 1809a0fde
$ pip install -r test_requirements.txt
$ python setup.py build_ext -i
### Mensagem de erro:
Log de compilação completo
 Executando a partir de um diretório de origem numpy. 
 Fontes de citonização 
 numpy / random / _bounded_integers.pxd.in não mudou 
 Processando numpy / random / mtrand.pyx 
 numpy / random / _common.pyx não mudou 
 Processando numpy / random / _mt19937.pyx 
 Processando numpy / random / _pcg64.pyx 
 Processando numpy / random / _generator.pyx 
 numpy / random / _bounded_integers.pyx não mudou 
 numpy / random / _sfc64.pyx não mudou 
 numpy / random / _philox.pyx não mudou 
 numpy / random / bit_generator.pyx não mudou 
 numpy / random / _bounded_integers.pyx.in não mudou 
 numpy / core / setup.py: 406: MismatchCAPIWarning: API incompatível detectada, os números de versão da API C devem ser atualizados. A versão atual da API C é 13, com soma de verificação 17a0f366e55ec05e5c5c149123478452, mas a soma de verificação registrada para a API C versão 13 em core / codegen_dir / cversions.txt é 5b0e8bbded00b166125974fc71e80a33. Se funções foram adicionadas na API C, você deve atualizar C_API_VERSION em numpy / core / setup_common.py. 
 check_api_version (C_API_VERSION, codegen_dir) 
 blas_opt_info:
 blas_mkl_info:
 personalizar UnixCCompiler
 bibliotecas mkl_rt não encontradas em ['/home/ross/.virtualenvs/tmp/lib', '/ usr / local / lib', '/ usr / lib64', '/ usr / lib', '/ usr / lib /' ]
 NÃO DISPONÍVEL

 blis_info:
 bibliotecas blis não encontradas em ['/home/ross/.virtualenvs/tmp/lib', '/ usr / local / lib', '/ usr / lib64', '/ usr / lib', '/ usr / lib /' ]
 NÃO DISPONÍVEL

 openblas_info:
 Compilador 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 = genérico -O3 -pipe -fno-plt -fPIC

 criando / tmp / tmpp_pb97eg / tmp
 criando / tmp / tmpp_pb97eg / tmp / tmpp_pb97eg
 opções de compilação: '-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
 ENCONTRADO:
 bibliotecas = ['openblas', 'openblas']
 library_dirs = ['/ usr / lib64']
 linguagem = c
 define_macros = [('HAVE_CBLAS', Nenhum)]

 ENCONTRADO:
 bibliotecas = ['openblas', 'openblas']
 library_dirs = ['/ usr / lib64']
 linguagem = c
 define_macros = [('HAVE_CBLAS', Nenhum)]

 caminho não existente em 'numpy / distutils': 'site.cfg'
 lapack_opt_info:
 lapack_mkl_info:
 bibliotecas mkl_rt não encontradas em ['/home/ross/.virtualenvs/tmp/lib', '/ usr / local / lib', '/ usr / lib64', '/ usr / lib', '/ usr / lib /' ]
 NÃO DISPONÍVEL

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

 criando / tmp / tmpeicqr4ho / tmp
 criando / tmp / tmpeicqr4ho / tmp / tmpeicqr4ho
 opções de compilação: '-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: na função `main ':
 /tmp/tmpeicqr4ho/source.c:4: referência indefinida a `zungqr_ '
 collect2: erro: ld retornou 1 status de saída
 NÃO DISPONÍVEL

 openblas_clapack_info:
 bibliotecas openblas, lapack não encontrado em ['/home/ross/.virtualenvs/tmp/lib', '/ usr / local / lib', '/ usr / lib64', '/ usr / lib', '/ usr / lib / ']
 NÃO DISPONÍVEL

 flame_info:
 bibliotecas flame não encontradas em ['/home/ross/.virtualenvs/tmp/lib', '/ usr / local / lib', '/ usr / lib64', '/ usr / lib', '/ usr / lib /' ]
 NÃO DISPONÍVEL

 atlas_3_10_threads_info:
 Configurando PTATLAS = ATLAS
 bibliotecas lapack_atlas não encontradas em /home/ross/.virtualenvs/tmp/lib
 bibliotecas tatlas, tatlas não encontradas em /home/ross/.virtualenvs/tmp/lib
 bibliotecas lapack_atlas não encontradas em / usr / local / lib
 bibliotecas tatlas, tatlas não encontradas em / usr / local / lib
 bibliotecas lapack_atlas não encontradas em / usr / lib64
 bibliotecas tatlas, tatlas não encontradas em / usr / lib64
 bibliotecas lapack_atlas não encontradas em / usr / lib
 bibliotecas tatlas, tatlas não encontradas em / usr / lib
 bibliotecas lapack_atlas não encontradas em / usr / lib /
 bibliotecas tatlas, tatlas não encontradas em / usr / lib /

 NÃO DISPONÍVEL

 atlas_3_10_info:
 bibliotecas lapack_atlas não encontradas em /home/ross/.virtualenvs/tmp/lib
 bibliotecas satlas, satlas não encontradas em /home/ross/.virtualenvs/tmp/lib
 bibliotecas lapack_atlas não encontradas em / usr / local / lib
 bibliotecas satlas, satlas não encontradas em / usr / local / lib
 bibliotecas lapack_atlas não encontradas em / usr / lib64
 bibliotecas satlas, satlas não encontradas em / usr / lib64
 bibliotecas lapack_atlas não encontradas em / usr / lib
 bibliotecas satlas, satlas não encontradas em / usr / lib
 bibliotecas lapack_atlas não encontradas em / usr / lib /
 bibliotecas satlas, satlas não encontradas em / usr / lib /

 NÃO DISPONÍVEL

 atlas_threads_info:
 Configurando PTATLAS = ATLAS
 bibliotecas lapack_atlas não encontradas em /home/ross/.virtualenvs/tmp/lib
 bibliotecas ptf77blas, ptcblas, atlas não encontradas em /home/ross/.virtualenvs/tmp/lib
 bibliotecas lapack_atlas não encontradas em / usr / local / lib
 bibliotecas ptf77blas, ptcblas, atlas não encontradas em / usr / local / lib
 bibliotecas lapack_atlas não encontradas em / usr / lib64
 bibliotecas ptf77blas, ptcblas, atlas não encontradas em / usr / lib64
 bibliotecas lapack_atlas não encontradas em / usr / lib
 bibliotecas ptf77blas, ptcblas, atlas não encontradas em / usr / lib
 bibliotecas lapack_atlas não encontradas em / usr / lib /
 bibliotecas ptf77blas, ptcblas, atlas não encontradas em / usr / lib /

 NÃO DISPONÍVEL

 atlas_info:
 bibliotecas lapack_atlas não encontradas em /home/ross/.virtualenvs/tmp/lib
 bibliotecas f77blas, cblas, atlas não encontradas em /home/ross/.virtualenvs/tmp/lib
 bibliotecas lapack_atlas não encontradas em / usr / local / lib
 bibliotecas f77blas, cblas, atlas não encontradas em / usr / local / lib
 bibliotecas lapack_atlas não encontradas em / usr / lib64
 bibliotecas f77blas, cblas, atlas não encontradas em / usr / lib64
 bibliotecas lapack_atlas não encontradas em / usr / lib
 bibliotecas f77blas, cblas, atlas não encontradas em / usr / lib
 bibliotecas lapack_atlas não encontradas em / usr / lib /
 bibliotecas f77blas, cblas, atlas não encontradas em / usr / lib /

 NÃO DISPONÍVEL

 accelerate_info:
 NÃO DISPONÍVEL

 lapack_info:
 bibliotecas lapack não encontradas em ['/home/ross/.virtualenvs/tmp/lib', '/ usr / local / lib', '/ usr / lib64', '/ usr / lib', '/ usr / lib /' ]
 NÃO DISPONÍVEL

 /home/ross/repos/numpy/numpy/distutils/system_info.py:1748: UserWarning: 
 Bibliotecas Lapack (http://www.netlib.org/lapack/) não encontradas.
 Os diretórios para pesquisar as bibliotecas podem ser especificados no
 arquivo numpy / distutils / site.cfg (seção [lapack]) ou por configuração
 a variável de ambiente LAPACK.
 return getattr (self, '_calc_info _ {}'. format (name)) ()
 lapack_src_info:
 NÃO DISPONÍVEL

 /home/ross/repos/numpy/numpy/distutils/system_info.py:1748: UserWarning: 
 Fontes de Lapack (http://www.netlib.org/lapack/) não encontradas.
 Os diretórios para pesquisar as fontes podem ser especificados no
 arquivo numpy / distutils / site.cfg (seção [lapack_src]) ou por configuração
 a variável de ambiente LAPACK_SRC.
 return getattr (self, '_calc_info _ {}'. format (name)) ()
 NÃO DISPONÍVEL

 numpy_linalg_lapack_lite:
 ENCONTRADO:
 linguagem = c
 define_macros = [('HAVE_BLAS_ILP64', Nenhum), ('BLAS_SYMBOL_SUFFIX', '64_')]

 caminho não existente em 'numpy / random': '{gen} .pxd'
 caminho não existente em 'numpy / random': '{gen} .pxd'
 /usr/lib/python3.8/distutils/dist.py:274: UserWarning: Opção de distribuição desconhecida: 'define_macros'
 warnings.warn (msg)
 executando build_ext
 executando build_src
 build_src
 construir fontes py_modules
 construção de fontes "npymath" da biblioteca
 adicionando 'numpy / core / src / npymath' para include_dirs.
 Nenhum - nada feito com h_files = ['numpy / core / src / npymath / npy_math_internal.h']
 construção de fontes "npysort" da biblioteca
 adicionando 'numpy / core / src / common' para include_dirs.
 Nenhum - nada feito com h_files = ['numpy / core / src / common / npy_sort.h', 'numpy / core / src / common / npy_partition.h', 'numpy / core / src / common / npy_binsearch.h']
 construção de fontes "npyrandom" da biblioteca
 construção de fontes de extensão "numpy.core._multiarray_tests"
 conv_template:> numpy / core / src / multiarray / _multiarray_tests.c
 construir fontes de extensão "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
 adicionando 'numpy / core / src / umath' para 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
 adicionando 'numpy / core / src / npymath' para 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
 adicionando 'numpy / core / src / common' para include_dirs.
 conv_template:> numpy / core / src / common / npy_cpu_features.c
 numpy.core - nada feito com 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']
 construir fontes de extensão "numpy.core._umath_tests"
 construir fontes de extensão "numpy.core._rational_tests"
 construir fontes de extensão "numpy.core._struct_ufunc_tests"
 construir fontes de extensão "numpy.core._operand_flag_tests"
 criando fontes de extensão "numpy.fft._pocketfft_internal"
 construir fontes de extensão "numpy.linalg.lapack_lite"
 ### Aviso: Usando lapack não otimizado ###
 criando fontes de extensão "numpy.linalg._umath_linalg"
 ### Aviso: Usando lapack não otimizado ###
 construir fontes de extensão "numpy.random._mt19937"
 construir fontes de extensão "numpy.random._philox"
 construir fontes de extensão "numpy.random._pcg64"
 construir fontes de extensão "numpy.random._sfc64"
 construir fontes de extensão "numpy.random._common"
 construir fontes de extensão "numpy.random.bit_generator"
 construir fontes de extensão "numpy.random._generator"
 construir fontes de extensão "numpy.random._bounded_integers"
 construir fontes de extensão "numpy.random.mtrand"
 construir fontes de data_files
 build_src: construção de arquivos de configuração npy-pkg
 personalizar UnixCCompiler
 personalizar UnixCCompiler usando new_build_clib
 construindo a biblioteca 'npymath'
 compilar fontes C
 Compilador 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 = genérico -O3 -pipe -fno-plt -fPIC

 opções de compilação: '-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 '
 opções extras: '-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: adicionando 4 arquivos de objeto a build / temp.linux-x86_64-3.8 / libnpymath.a
 construindo biblioteca 'npyrandom'
 compilar fontes C
 Compilador C: gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -march = x86-64 -mtune = genérico -O3 -pipe -fno-plt -fno-semantic-interposition -march = x86-64 -mtune = genérico -O3 -pipe -fno-plt -march = x86-64 -mtune = genérico -O3 -pipe -fno-plt -fPIC

 opções de compilação: '-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 '
 opções extras: '-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: adicionando 5 arquivos de objeto a build / temp.linux-x86_64-3.8 / libnpyrandom.a
 personalizar UnixCCompiler
 personalizar UnixCCompiler usando new_build_ext
 construir a extensão 'numpy.core._multiarray_tests'
 compilar fontes C
 Compilador 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 = genérico -O3 -pipe -fno-plt -fPIC

 opções de compilação: '-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 / common-core / coreIncumpy / coreInumpy / include / core / comum / 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 '
 opções extras: '-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, - conforme necessário, -z, relro, -z, now -fno-semantic-interposition -Wl, -O1, - sort-common, - conforme necessário, -z, relro, -z, agora 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: definição múltipla 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: definido pela primeira vez aqui
 collect2: erro: ld retornou 1 status de saída
 erro: Comando "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 "falhou com status de saída 1

Informações sobre a versão Numpy / Python:

Versão Python: 3.8.3
Versão NumPy: 1809a0fde
Versão GCC: 10.1

00 - Bug build

Comentários muito úteis

O erro está faltando extern na declaração, gh-16435 deve corrigi-lo, Ross testou para mim.

Todos 4 comentários

Acho que provavelmente essas definições não são estritamente corretas (agora que você notou, a análise estática do clang também está me alertando sobre isso). Eles provavelmente precisam ser movidos para os arquivos de cabeçalho específicos até que os tornemos públicos?

Também vejo isso, gcc 10.1.1. Atualizei meu sistema operacional ontem à noite, sempre há problemas depois ...

Estou vendo isso com

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.

O erro está faltando extern na declaração, gh-16435 deve corrigi-lo, Ross testou para mim.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

astrofrog picture astrofrog  ·  4Comentários

Foadsf picture Foadsf  ·  3Comentários

manuels picture manuels  ·  3Comentários

perezpaya picture perezpaya  ·  4Comentários

keithbriggs picture keithbriggs  ·  3Comentários