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: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
Versão Python: 3.8.3
Versão NumPy: 1809a0fde
Versão GCC: 10.1
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.
Comentários muito úteis
O erro está faltando
extern
na declaração, gh-16435 deve corrigi-lo, Ross testou para mim.