numpyをローカルでビルドしようとすると、次のエラーが発生しました。
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は、問題の原因として1809a0fdeを特定しました。 このエラーはgcc10.1でのみ発生したことに注意してください。 gcc9.3では問題は発生しませんでした。 ###コード例の再現:$ git clone https://github.com/numpy/numpy.git
$ git checkout 1809a0fde
$ pip install -r test_requirements.txt
$ python setup.py build_ext -i
### エラーメッセージ:numpyのソースディレクトリから実行しています。 Cythonizingソース numpy / random /_bounded_integers.pxd.inは変更されていません numpy / random /mtrand.pyxを処理しています numpy / random /_common.pyxは変更されていません numpy / random /_mt19937.pyxを処理しています numpy / random /_pcg64.pyxを処理しています numpy / random /_generator.pyxを処理しています numpy / random /_bounded_integers.pyxは変更されていません numpy / random /_sfc64.pyxは変更されていません numpy / random /_philox.pyxは変更されていません numpy / random /bit_generator.pyxは変更されていません numpy / random /_bounded_integers.pyx.inは変更されていません numpy / core / setup.py:406:MismatchCAPIWarning:APIの不一致が検出されました。CAPIのバージョン番号を更新する必要があります。 現在のCapiバージョンは13で、チェックサムは17a0f366e55ec05e5c5c149123478452ですが、core / codegen_dir /cversions.txtに記録されているCAPIバージョン13のチェックサムは5b0e8bbded00b166125974fc71e80a33です。 C APIに関数が追加された場合は、numpy / core /setup_common.pyのC_API_VERSIONを更新する必要があります。 check_api_version(C_API_VERSION、codegen_dir) blas_opt_info: blas_mkl_info: UnixCCompilerをカスタマイズする ライブラリmkl_rtが['/home/ross/.virtualenvs/tmp/lib'、'/usr/local/lib'、'/usr/lib64'、'/ usr / lib'、 '/ usr / lib /'に見つかりません] 利用不可 blis_info: ライブラリblisが['/home/ross/.virtualenvs/tmp/lib'、'/usr/local/lib'、'/usr/lib64'、'/ usr / lib'、 '/ usr / lib /'に見つかりません] 利用不可 openblas_info: 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 / tmp / tmpp_pb97eg / tmpの作成 / tmp / tmpp_pb97eg / tmp / tmpp_pb97egの作成 コンパイルオプション: '-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 見つかりました: ライブラリ= ['openblas'、 'openblas'] library_dirs = ['/ usr / lib64'] 言語= c define_macros = [( 'HAVE_CBLAS'、None)] 見つかりました: ライブラリ= ['openblas'、 'openblas'] library_dirs = ['/ usr / lib64'] 言語= c define_macros = [( 'HAVE_CBLAS'、None)] 'numpy / distutils'に存在しないパス: 'site.cfg' lapack_opt_info: lapack_mkl_info: ライブラリmkl_rtが['/home/ross/.virtualenvs/tmp/lib'、'/usr/local/lib'、'/usr/lib64'、'/ usr / lib'、 '/ usr / lib /'に見つかりません] 利用不可 openblas_lapack_info: 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 / tmp / tmpeicqr4ho / tmpの作成 / tmp / tmpeicqr4ho / tmp / tmpeicqr4hoを作成します コンパイルオプション: '-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:関数 `main '内: /tmp/tmpeicqr4ho/source.c:4:`zungqr_ 'への未定義の参照 collect2:エラー:ldが1つの終了ステータスを返しました 利用不可 openblas_clapack_info: ライブラリopenblas、lapackが['/home/ross/.virtualenvs/tmp/lib'、'/usr/local/lib'、'/usr/lib64'、'/usr/lib'、'/ usr / libに見つかりません/ '] 利用不可 Flame_info: ライブラリフレームが['/home/ross/.virtualenvs/tmp/lib'、'/usr/local/lib'、'/usr/lib64'、'/ usr / lib'、 '/ usr / lib /'に見つかりません] 利用不可 atlas_3_10_threads_info: PTATLAS = ATLASの設定 ライブラリlapack_atlasが/home/ross/.virtualenvs/tmp/libに見つかりません ライブラリtatlas、tatlasが/home/ross/.virtualenvs/tmp/libに見つかりません ライブラリlapack_atlasが/ usr / local / libに見つかりません ライブラリtatlas、tatlasが/ usr / local / libに見つかりません ライブラリlapack_atlasが/ usr / lib64に見つかりません ライブラリtatlas、tatlasが/ usr / lib64に見つかりません ライブラリlapack_atlasが/ usr / libに見つかりません ライブラリtatlas、tatlasが/ usr / libに見つかりません ライブラリlapack_atlasが/ usr / lib /に見つかりません ライブラリtatlas、tatlasが/ usr / lib /に見つかりません利用不可 atlas_3_10_info: ライブラリlapack_atlasが/home/ross/.virtualenvs/tmp/libに見つかりません ライブラリsatlas、satlasが/home/ross/.virtualenvs/tmp/libに見つかりません ライブラリlapack_atlasが/ usr / local / libに見つかりません ライブラリsatlas、satlasが/ usr / local / libに見つかりません ライブラリlapack_atlasが/ usr / lib64に見つかりません ライブラリsatlas、satlasが/ usr / lib64に見つかりません ライブラリlapack_atlasが/ usr / libに見つかりません ライブラリsatlas、satlasが/ usr / libに見つかりません ライブラリlapack_atlasが/ usr / lib /に見つかりません ライブラリsatlas、satlasが/ usr / lib /に見つかりません 利用不可 atlas_threads_info: PTATLAS = ATLASの設定 ライブラリlapack_atlasが/home/ross/.virtualenvs/tmp/libに見つかりません ライブラリptf77blas、ptcblas、atlasが/home/ross/.virtualenvs/tmp/libに見つかりません ライブラリlapack_atlasが/ usr / local / libに見つかりません ライブラリptf77blas、ptcblas、atlasが/ usr / local / libに見つかりません ライブラリlapack_atlasが/ usr / lib64に見つかりません ライブラリptf77blas、ptcblas、atlasが/ usr / lib64に見つかりません ライブラリlapack_atlasが/ usr / libに見つかりません ライブラリptf77blas、ptcblas、atlasが/ usr / libに見つかりません ライブラリlapack_atlasが/ usr / lib /に見つかりません ライブラリptf77blas、ptcblas、atlasが/ usr / lib /に見つかりません 利用不可 atlas_info: ライブラリlapack_atlasが/home/ross/.virtualenvs/tmp/libに見つかりません ライブラリf77blas、cblas、atlasが/home/ross/.virtualenvs/tmp/libに見つかりません ライブラリlapack_atlasが/ usr / local / libに見つかりません ライブラリf77blas、cblas、atlasが/ usr / local / libに見つかりません ライブラリlapack_atlasが/ usr / lib64に見つかりません ライブラリf77blas、cblas、atlasが/ usr / lib64に見つかりません ライブラリlapack_atlasが/ usr / libに見つかりません ライブラリf77blas、cblas、atlasが/ usr / libに見つかりません ライブラリlapack_atlasが/ usr / lib /に見つかりません ライブラリf77blas、cblas、atlasが/ usr / lib /に見つかりません 利用不可 加速情報: 利用不可 lapack_info: ライブラリlapackが['/home/ross/.virtualenvs/tmp/lib'、'/usr/local/lib'、'/usr/lib64'、'/ usr / lib'、 '/ usr / lib /'に見つかりません] 利用不可 /home/ross/repos/numpy/numpy/distutils/system_info.py:1748:UserWarning: Lapack(http://www.netlib.org/lapack/)ライブラリが見つかりません。 ライブラリを検索するディレクトリは、で指定できます。 numpy / distutils / site.cfgファイル(セクション[lapack])または設定 LAPACK環境変数。 getattr(self、 '_ calc_info_ {}'。format(name))()を返します lapack_src_info: 利用不可 /home/ross/repos/numpy/numpy/distutils/system_info.py:1748:UserWarning: Lapack(http://www.netlib.org/lapack/)ソースが見つかりません。 ソースを検索するディレクトリは、で指定できます。 numpy / distutils / site.cfgファイル(セクション[lapack_src])または設定 LAPACK_SRC環境変数。 getattr(self、 '_ calc_info_ {}'。format(name))()を返します 利用不可 numpy_linalg_lapack_lite: 見つかりました: 言語= c define_macros = [( 'HAVE_BLAS_ILP64'、None)、( 'BLAS_SYMBOL_SUFFIX'、 '64_')] 'numpy / random'に存在しないパス: '{gen} .pxd' 'numpy / random'に存在しないパス: '{gen} .pxd' /usr/lib/python3.8/distutils/dist.py:274:UserWarning:不明な配布オプション: 'define_macros' warnings.warn(msg) build_extを実行しています build_srcを実行しています build_src py_modulesソースの構築 ライブラリ「npymath」ソースの構築 'numpy / core / src / npymath'をinclude_dirsに追加します。 なし-h_files = ['numpy / core / src / npymath /npy_math_internal.h']では何も実行されません ライブラリ「npysort」ソースの構築 include_dirsに「numpy / core / src / common」を追加します。 なし-h_files = ['numpy / core / src / common / npy_sort.h'、 'numpy / core / src / common / npy_partition.h'、 'numpy / core / src / common / npy_binsearch.h']では何も実行されません ライブラリ「npyrandom」ソースの構築 拡張機能「numpy.core._multiarray_tests」のソースを構築する conv_template:> numpy / core / src / multiarray / _multiarray_tests.c 建物拡張機能「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 'numpy / core / src / umath'を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 'numpy / core / src / npymath'を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 include_dirsに「numpy / core / src / common」を追加します。 conv_template:> numpy / core / src / common / npy_cpu_features.c numpy.core-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'] 建物の拡張機能「numpy.core._umath_tests」のソース 拡張機能「numpy.core._rational_tests」のソースを構築する 拡張機能「numpy.core._struct_ufunc_tests」のソースを構築する 拡張機能「numpy.core._operand_flag_tests」のソースを構築する 建物の拡張機能「numpy.fft._pocketfft_internal」ソース 建物の拡張機能「numpy.linalg.lapack_lite」のソース ###警告:最適化されていないlapackを使用しています### 建物の拡張機能「numpy.linalg._umath_linalg」のソース ###警告:最適化されていないlapackを使用しています### 建物の拡張機能「numpy.random._mt19937」のソース 拡張機能「numpy.random._philox」のソースを構築する 拡張機能「numpy.random._pcg64」のソースを構築する 拡張機能「numpy.random._sfc64」のソースを構築する 拡張機能「numpy.random._common」ソースを構築する 拡張機能「numpy.random.bit_generator」のソースを構築する 拡張機能「numpy.random._generator」のソースを構築する 建物拡張機能「numpy.random._bounded_integers」ソース 建物の拡張機能「numpy.random.mtrand」のソース data_filesソースの構築 build_src:npy-pkg設定ファイルのビルド UnixCCompilerをカスタマイズする new_build_clibを使用してUnixCCompilerをカスタマイズします 'npymath'ライブラリの構築 Cソースのコンパイル 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 コンパイルオプション: '-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 ' 追加オプション: '-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:4つのオブジェクトファイルをbuild / temp.linux-x86_64-3.8 /libnpymath.aに追加します 'npyrandom'ライブラリの構築 Cソースのコンパイル 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 コンパイルオプション: '-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 ' 追加オプション: '-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:build / temp.linux-x86_64-3.8 /libnpyrandom.aに5つのオブジェクトファイルを追加します UnixCCompilerをカスタマイズする new_build_extを使用してUnixCCompilerをカスタマイズします 'numpy.core._multiarray_tests'拡張機能の構築 Cソースのコンパイル 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 コンパイルオプション: '-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 ' 追加オプション: '-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、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: 1825: `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:最初にここで定義 collect2:エラー:ldが1つの終了ステータスを返しました エラー:コマンド "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 "が失敗しました終了ステータス1
Pythonバージョン:3.8.3
NumPyバージョン:1809a0fde
GCCバージョン:10.1
私はそれらの定義がおそらくそこにあることは厳密にはOKではないと思います(あなたがそれに気づいたので、clang静的分析は私にそれについていくつかの警告を与えています)。 それらを公開するまで、おそらく特定のヘッダーファイルに移動する必要がありますか?
それもわかります、gcc10.1.1。 昨夜OSをアップグレードしましたが、その後は常に問題が発生します...
私はこれを見ています
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.
エラーは宣言にextern
がないことです、gh-16435はそれを修正するはずです、ロスは私のためにそれをテストしました。
最も参考になるコメント
エラーは宣言に
extern
がないことです、gh-16435はそれを修正するはずです、ロスは私のためにそれをテストしました。