3

ここでの手順に従って、LAPACK / BLASを構築することを目的として、Fortran対応のNDKツールチェーン(OSX、NDK-7b)を構築しました。

3.4.0ネットライブラリソースでandroid-cmakeを使用すると、ほぼ成功しているようです。sincosただし、テストの1つをリンクすると、BLASビルドが失敗します(未解決およびを示すエラーが発生しますsincosf)。少し検索すると、これらの機能は従来のAndroidバージョンでは使用できないことがわかります。これらの機能を解決するための最良の方法は何ですか?

以下は、リンクエラーの例です。

cd /Users/marc/software/lapack-3.4.0/Android/BLAS/TESTING && / opt / local / bin / cmake -E cmake_link_script CMakeFiles / xblat2c.dir / link.txt --verbose = 1 / opt / local / share / java / android-ndk-macosx / toolchains / arm-linux-androideabi-4.7.0 / prebuilt / darwin-x86 / bin / arm-linux-androideabi-gfortran -Wl、-gc-sections -Wl、-z 、nocopyreloc -Wl、-fix-cortex-a8 -Wl、-no-undefined -lstdc ++ -lsupc ++ CMakeFiles / xblat2c.dir / cblat2.fo -o ../../bin/xblat2c -rdynamic -L / Users /marc/software/lapack-3.4.0/Android/systemlibs/armeabi-v7a -L / opt / local / share / java / android-ndk-macosx / toolchains / arm-linux-androideabi-4.7.0 / prebuilt / darwin -x86 / user / libs / armeabi-v7a ../../lib/libblas.a -lm -Wl、-rpath、/ Users / marc / software / lapack-3.4.0 / Android / systemlibs / armeabi-v7a: /opt/local/share/java/android-ndk-macosx/toolchains/arm-linux-androideabi-4.7。0 / prebuilt / darwin-x86 / user / libs / armeabi-v7a / opt / local / share / java / android-ndk-macosx / toolchains / arm-linux-androideabi-

4.7.0 / prebuilt / darwin-x86 / lib / gcc / arm-linux-androideabi / 4.7.0 / .. / .. / .. / .. / arm-linux-androideabi / lib / libgfortran.a(c99_functions。 o):機能cexpf': /opt/local/share/java/android-ndk-macosx/src/build/../gcc/gcc-4.7.0/libgfortran/intrinsics/c99_functions.c:910: undefined reference to中sincosf '

4

1 に答える 1

2

GCCは、コンパイル時sincosに利用可能かどうかを知る必要があります。それはターゲットに基づいてそうします。ターゲットトリプレットの場合arm-linux-androideabi、それはそこで調べてgcc/config/linux.h見つけます:

/* Whether we have sincos that follows the GNU extension.  */
#undef TARGET_HAS_SINCOS
#define TARGET_HAS_SINCOS (OPTION_GLIBC || OPTION_BIONIC)

Bionicが含まれている理由は、Android2.3が//[1]のサポートを追加したsincosfためsincosですsincosl。したがって、Bionicを更新するか、GCCにパッチを適用して、使用可能なものがないと想定することsincosができます。cf. また[2]。

[1] http://source-android.frandroid.com/bionic/libc/docs/CHANGES.TXT

[2] https://bugs.launchpad.net/linaro-android/+bug/908125

于 2012-04-18T12:33:56.017 に答える