host:ubuntu 下载perl上传到android device
wget wget http://www.cpan.org/src/5.0/perl-5.38.2.tar.gz
adb push perl-5.38.2.tar.gz /data/local/tmp
android:
tar -xvzf perl-5.38.2.tar.gz
boio.c会提示找不到pipe2。直接加入
extern int pipe2(int *, int);
./Configure \
-Dsysroot=$SYSROOT \
-Dsh=/data/local/tmp/python3/usr/bin/sh \
-Dcc=$CC \
-Dcxx=$CXX \
-Dar=$AR \
-Dld="$CC -Wl,-rpath=/data/local/tmp/python3/usr/lib -Wl,--enable-new-dtags" \
-Dnm=/data/local/tmp/ndk/toolchains/llvm/prebuilt/linux-aarch64/bin/llvm-nm \
-Dprefix=/data/local/tmp/python3/usr
make
make install
然后
perl -e "print \"Hello from Android!\n\";"
2 ninja
参见 https://github.com/termux/termux-packages/tree/master/packages/ninja
主要是/src/subprocess-posix.cc中shell 默认是bin/sh。andriod中是没有的,改用busybox提供的sh,我的是在然后
export LDFLAGS+=" -landroid-spawn"
./configure.py --bootstrap
make
同样的configure.py中首行指定使用的/bin/sh也要改一下,#!/data/local/tmp/python3/usr/bin/sh
可以得到ninja
openblas
wget https://github.com/OpenMathLib/OpenBLAS/archive/refs/tags/v0.3.26.tar.gz
export LDFLAGS="-lm"
make TARGET=ARMV8 ONLY_CBLAS=1 AR=$AR CC=$CC NOFORTRAN=1
make PREFIX=/data/local/tmp/python3/usr install
mxnet
cmake \
-DANDROID_PLATFORM=android-28 \
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} \
-DUSE_BLAS=Open \
-DOpenBLAS_INCLUDE_DIR=/data/local/tmp/python3/usr/include \
-DOpenBLAS_LIB=/data/local/tmp/python3/usr/lib/libopenblas.a \
-DGOOGLETEST_VERSION=1.14.0 \
-DANDROID_ABI="arm64-v8a" \
-DANDROID_STL="c++_shared" \
-DANDROID=ON \
-DUSE_CUDA=OFF \
-DUSE_SSE=OFF \
-DUSE_LAPACK=OFF \
-DUSE_OPENCV=OFF \
-DUSE_OPENMP=OFF \
-DUSE_SIGNAL_HANDLER=ON \
-DUSE_MKL_IF_AVAILABLE=OFF \
-G Ninja ..
ninja
然后在build目录下会得到libmxnet.so
然后进入python目录运行
python3 setup.py install