New CrystaX NDK 10.3.2 is available, offering numerous great features and improvements; perhaps you should check it out instead of using old one.
Here are customized distribution of Android NDK r4b which I have rebuilt from official sources. Support of C++ exceptions, RTTI and Standard C++ Library added. There was no many modifications, you can see them in my patch
Update: New bug-fix release android-ndk-r4-crystax-2 ready! List of problems fixed:
- Snow Leopard ndk-gdb bug: ameabi instead of armeabi
- Snow Leopard ndk-gdb call gensub function not available in BSD awk
- ndk-gdb fail if both emulator and device attached
- Compiler error when including asm/byteorder.h
- ndk-build fails in case of parallel build
- Ability to download toolchain sources over http
- gdbserver binary incompatibility
- Build gcc with threads enabled
- ndk-build: problems with parameters containing spaces
Update 2: New bug-fix release android-ndk-r4-crystax-3 ready! One important fix included:
Update 3: New bug-fix release android-ndk-r4-crystax-4 ready! List of problems fixed:
- Install Failed
- Could not package toolchain source archive ?. See
- Build failed on Windows 7 with UAC enabled
- Mac OS X: Build failed if there is no gawk installed
The content of the CrystaX NDK is covered by various open-source licenses. See the copyright disclaimers in each respective file for details.
Note that the CrystaX NDK release packages also contain prebuilt binaries for the compiler, linker, archiver, etc. The source codes for the toolchains are available at GitHub (you can use the build script to download it automatically).
The prebuilt GCC and companion binaries (GDB, binutils etc) are covered by either the GNU General Public License (GPL) or the GNU Lesser General Public License (LGPL). For details, see the files COPYING and COPYING.LIB under $NDK/toolchains/$tc/prebuilt/$system.
The prebuilt LLVM/Clang toolchains are covered by the LLVM "BSD" license.
Basically, licensing rules are the same as for Google's Android NDK - i.e., both commercial and non-commercial usage allowed. The only additions are regarding CrystaX parts, which are covered by a permissive BSD 2-clause license.
How to build
You can also build your own distribution if you don't want to use my prebuilt versions. To do it, follow instructions below.
Required development tools:
- For Windows, a recent release of Cygwin is required
- GNU Make 3.81 or later
- GNU Makeinfo (most recent version)
- GIT (for downloading toolchain sources)
- Most recent GNU Libtool packages (automake, autoconf etc)
- GNU C/C++ 3.x or later (for Windows, it should be exactly 3.x, not 4.x)
- ncurses library (for Cygwin, it should be ncurses-devel package)
- GNU flex (most recent version)
- patch utility. Most likely, it is already installed if you are using Linux or Mac OS X; however, in Cygwin it should be installed explicitly
- Download my patch and store it somewhere
- Download android-ndk-r4b for your platform from android web site
- Unpack downloaded file and go to directory android-ndk-r4b
- For Windows 7 and Vista users: fix permissions of the just unpacked folder. Type in terminal:
cmd /c "icacls . /grant Everyone:(F) /T"
- Apply my patch:
patch -p1 <path-to-my-patch
- Point environment variable ANDROID_NDK_ROOT to the current directory:
- For Windows users: point environment variable CC to the GCC 3:
- For Mac users: if you're planned to run built package on earlier versions of Mac OS X (say, you build it on
Snow Leopard but want to run it also on Leopard), environment variables CC and LDFLAGS should be specified.
If this is not case, just ignore this point. Otherwise, type in terminal:
CC="gcc -isystem /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4" LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk" export CC LDFLAGSThis will result in binaries which could run on Tiger and later versions; change SDK to another if minimal target is not Tiger.
- Download android toolchain sources:
./build/tools/download-toolchain-sources.sh --release=myrelease --package --over-http --verbose --for-date=2010-07-15It will take some time depending on you network connectivity. Finally, it will download sources and pack them to the package /tmp/android-ndk-toolchain-myrelease.tar.bz2
- Run build script:
./build/tools/rebuild-all-prebuilt.sh --verbose --package --toolchain-src-pkg=/tmp/android-ndk-toolchain-myrelease.tar.bz2It will unpack android toolchain sources (including binutils, gcc and gdb), patch and compile them. It could take lot of time depending on your configuration so be patient.
- Finally, when build script finished, it will print name of the compiled toolchain (something like
/tmp/android-ndk-prebuilt-20100716-linux-x86.tar.bz2, actual name will depend on current date).
Run the commands:
rm -Rf ./build/prebuilt tar xjvf /tmp/android-ndk-prebuilt-20100716-linux-x86.tar.bz2
- Now you are ready to test it. Try to compile application hello-jni (I've modified it, so there are STL and exceptions in the code) using instructions from Android team
Thank you for downloading CrystaX NDK!
CrystaX NDK is a fully open source project, free to use in any open-source and commercial environment. We provide it free for use and don't ask our users to pay in exchange. However, we appreciate your support, through sending us pull requests, spreading the news about CrystaX NDK over the world, or just donating:
Who we are
We're a small team of developers who want to make development for Android easier. Our goal is to create a comprehensive toolkit for native development for Android on C, C++, Objective-C, and, potentially, in other programming languages already working on modern POSIX systems (Swift, D, Haskell, Ocaml, Python, Ruby - you name it).
We've already done a lot (as you can see on our main project page), but we want to do even more. We have a long way to go, but we know how to do it and can clearly see the steps required to make it happen. You can read more about us here.
Why we need your support
Since we started working on CrystaX NDK, we have funded ourselves without any sponsorship. That has led us to make money in other ways (such as working as contractors and doing consulting jobs on other projects) and invest our earnings in the CrystaX NDK project. Because of this we have only been able to work on NDK part-time, which means it is not as powerful as it could be.
Having support from the community, we could pay more attention to CrystaX NDK development, without the distraction on paid contracts. This will speed up CrystaX NDK development as well as bug fixing and support.
Optionally, sponsors (those who send us $200/month or more) get in exchange a number of perks - they get priority for consulting or training needs, they can be listed on the front page of the CrystaX website and mentioned in the project README, etc. Please read here for more details about sponsoring options.
When the download is finished, please check that the downloaded file is not corrupted!
The SHA-256 hash must be .
Here is an example of how to check it using OpenSSL:
$ CHECKSUM= && \ FILE= && \ diff <(openssl sha256 $FILE) <(echo "SHA256($FILE)= $CHECKSUM") \ && echo 'OK' || echo '*** CORRUPTED!!!'