Numpy: GCC10.1でnumpyをコンパイルする際の問題

作成日 2020年05月28日  ·  4コメント  ·  ソース: numpy/numpy

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

Numpy / Pythonのバージョン情報:

Pythonバージョン:3.8.3
NumPyバージョン:1809a0fde
GCCバージョン:10.1

00 - Bug build

最も参考になるコメント

エラーは宣言にexternがないことです、gh-16435はそれを修正するはずです、ロスは私のためにそれをテストしました。

全てのコメント4件

私はそれらの定義がおそらくそこにあることは厳密には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はそれを修正するはずです、ロスは私のためにそれをテストしました。

このページは役に立ちましたか?
0 / 5 - 0 評価