1

このプロジェクトには、「-fopenmp」フラグを付けてコンパイルされたプリコンパイル済みライブラリがあります。プロジェクト全体のビルドは機能しますが、OpenMP を使用するとすぐに次のエラーが発生します。

A/libc: 致命的なシグナル 8 (SIGFPE)、コード 1、tid 32702 の障害 addr 0x8a8fe7cd (androidapp)

OpenMP が JNI 経由で使用されるとすぐに発生します。残念ながら、そのエラーについてはあまり見つけることができませんでした。OpenMP なしでコンパイルすると、プロジェクト全体が正常に動作します。

以下は Gradle の一部です。

externalNativeBuild {
        cmake {
            cppFlags "-std=gnu++14 -fopenmp -fPIE -fPIC"
            cFlags "-fopenmp -fPIE -fPIC"
            abiFilters 'x86'
            arguments   "-DANDROID_STL=gnustl_static",
                        "-DANDROID_PIE=ON",
                        "-DANDROID_TOOLCHAIN=clang",
                        "-DANDROID_CPP_FEATURES=exceptions rtti",
                        "-DANDROID_ALLOW_UNDEFINED_SYMBOLS=TRUE"
        }
    }

ライブラリのコンパイルに使用するメイクファイルの数行を次に示します。

CFLAGS   := -fopenmp -fPIE -fPIC
CXXFLAGS := -fopenmp -fPIE -fPIC
LDFLAGS  := -fPIE -fPIC -pie -fopenmp

これを解決するにはどうすればよいですか?エラーの原因はどこにあるのでしょうか? この場合、OpenMP を使用することは可能ですか?

4

0 に答える 0