Skip to content

Instantly share code, notes, and snippets.

@bryanjhv
Last active August 8, 2019 08:36
Show Gist options
  • Save bryanjhv/e35d25c483b1d9306d4bf075a5b5a2f6 to your computer and use it in GitHub Desktop.
Save bryanjhv/e35d25c483b1d9306d4bf075a5b5a2f6 to your computer and use it in GitHub Desktop.
Compile micronucleus uploader for Android armv7
set -x
mkdir -p src usr
# Set variables
export PREFIX=$PWD/usr
export HOST_TAG=linux-x86_64
export NDK=$HOME/Android/Sdk/ndk-bundle
export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/$HOST_TAG
export AR=$TOOLCHAIN/bin/arm-linux-androideabi-ar
export AS=$TOOLCHAIN/bin/arm-linux-androideabi-as
export LD=$TOOLCHAIN/bin/arm-linux-androideabi-ld
export NM=$TOOLCHAIN/bin/arm-linux-androideabi-nm
export STRIP=$TOOLCHAIN/bin/arm-linux-androideabi-strip
export RANLIB=$TOOLCHAIN/bin/arm-linux-androideabi-ranlib
export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang
export OBJCOPY=$TOOLCHAIN/bin/arm-linux-androideabi-objcopy
export OBJDUMP=$TOOLCHAIN/bin/arm-linux-androideabi-objdump
export READELF=$TOOLCHAIN/bin/arm-linux-androideabi-readelf
export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang++
# Compile libusb
cd src
wget https://github.com/libusb/libusb/releases/download/v1.0.22/libusb-1.0.22.tar.bz2
tar xf libusb-1.0.22.tar.bz2
cd libusb-1.0.22
./configure --host=armv7a-linux-androideabi --prefix=$PREFIX --disable-udev --enable-static --disable-shared
make
make install
cd ../..
# Compile libusb-compat
cd src
wget https://downloads.sourceforge.net/libusb/libusb-compat-0.1/libusb-compat-0.1.5/libusb-compat-0.1.5.tar.bz2
tar xf libusb-compat-0.1.5.tar.bz2
cd libusb-compat-0.1.5
./configure --host=armv7a-linux-androideabi --prefix=$PREFIX --enable-static --disable-shared
make
make install
cd ../..
# Compile micronucleus
cd src
wget https://github.com/micronucleus/micronucleus/archive/2.04.tar.gz -O micronucleus-2.04.tar.gz
tar xf micronucleus-2.04.tar.gz
cd micronucleus-2.04/commandline
# Their Makefile is buggy
$CC -I$PREFIX/include -Ilibrary -O -g -D LINUX -c library/micronucleus_lib.c
$CC -I$PREFIX/include -Ilibrary -O -g -D LINUX -c library/littleWire_util.c
$CC -I$PREFIX/include -Ilibrary -O -g -D LINUX -o micronucleus micronucleus.c micronucleus_lib.o littleWire_util.o $PREFIX/lib/libusb.a $PREFIX/lib/libusb-1.0.a
cp micronucleus $PREFIX/bin
cd ../../..
# Test on Android (armv7)
adb push $PREFIX/bin/micronucleus /data/local/tmp
adb shell /data/local/tmp/micronucleus --help
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment