使用 Android 工具链进行交叉编译
cross compiling using Android toolchains
我需要为 android 编译 mpich,我使用 NDK arm-linux-andoirdeabi-4.8 工具链交叉编译 mpi,我做了以下操作
export PATH="$NDK_ROOT/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/:$PATH"
export SYS_ROOT="$NDK_ROOT/platforms/android-8/arch-arm/"
export CC="arm-linux-androideabi-gcc --sysroot=$SYS_ROOT"
export LD="arm-linux-androideabi-ld"
export AR="arm-linux-androideabi-ar"
./configure --host=arm-linux-androideabi --prefix=/Crosscompile2/jni/mpich/ LIBS="-lc -lgcc " --disable-shared --disable-fortran --disable-cxx
但我收到以下错误:
checking for pthread_key_create in -lpthread... no
checking checkpointing library... configure: error: pthreads is required for checkpointing, but was not found
configure: error: src/pm/hydra configure failed
当我添加 -lpthread
LIBS="-lc -lgcc -lpthread"
它没有编译
checking whether the C compiler works... no
configure: error: C compiler cannot create executables
Android的特殊之处在于它实现了pthreads,但没有单独的libpthread.a。简单的解决方法是 add an empty library to your toolchain usr/lib
$AR q $SYS_ROOT/usr/lib/libpthread.a
之前 运行 ./configure
对于 libpthread 问题,您有 2 个选择。
- 排除了 configure/makefiles 的要求,因为 pthread 包含在 bionics libc 中
或
- 创建一个 libpthead,它是 libc 的符号链接
cd $SYSROOT/usr/lib
ln -s libc.a libpthread.a
我需要为 android 编译 mpich,我使用 NDK arm-linux-andoirdeabi-4.8 工具链交叉编译 mpi,我做了以下操作
export PATH="$NDK_ROOT/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/:$PATH"
export SYS_ROOT="$NDK_ROOT/platforms/android-8/arch-arm/"
export CC="arm-linux-androideabi-gcc --sysroot=$SYS_ROOT"
export LD="arm-linux-androideabi-ld"
export AR="arm-linux-androideabi-ar"
./configure --host=arm-linux-androideabi --prefix=/Crosscompile2/jni/mpich/ LIBS="-lc -lgcc " --disable-shared --disable-fortran --disable-cxx
但我收到以下错误:
checking for pthread_key_create in -lpthread... no
checking checkpointing library... configure: error: pthreads is required for checkpointing, but was not found
configure: error: src/pm/hydra configure failed
当我添加 -lpthread
LIBS="-lc -lgcc -lpthread"
它没有编译
checking whether the C compiler works... no
configure: error: C compiler cannot create executables
Android的特殊之处在于它实现了pthreads,但没有单独的libpthread.a。简单的解决方法是 add an empty library to your toolchain usr/lib
$AR q $SYS_ROOT/usr/lib/libpthread.a
之前 运行 ./configure
对于 libpthread 问题,您有 2 个选择。
- 排除了 configure/makefiles 的要求,因为 pthread 包含在 bionics libc 中
或
- 创建一个 libpthead,它是 libc 的符号链接
cd $SYSROOT/usr/lib
ln -s libc.a libpthread.a