About arm-eabi-gcc and cross-compiling

Kyborg2011 picture Kyborg2011 · May 7, 2011 · Viewed 18.3k times · Source

I have a complicated open source library that needs to be ported to Android NDK. First, I need to configure (. / Configure). I understand: I have to do cross-compile with / home/user/android-ndk/build/prebuilt/ linux-x86/arm-eabi-4.4.0/bin/arm-eabi-gcc I think right? This utility will correctly configures a library? If yes, then question 2:

1.I'm trying to compile such a library: libao. use these commands:


PREBUILT = / home/user/android-ndk/build/prebuilt/linux-x86/arm- 
eabi-4.4.0 
PLATFORM = / home/user/android-ndk/build/platforms/android-3/arch-arm 
INSTALL = / home/user/sox-14.3.2/com 

export CC = "/ home/user/android-ndk/build/prebuilt/linux-x86/arm- 
eabi-4.4.0/bin/arm-eabi-gcc" 
export CFLAGS = "-fPIC-DANDROID" 
export LDFLAGS = "-Wl,-T, $ PREBUILT / arm-eabi / lib / ldscripts / 
armelf.x-Wl,-rpath-link = $ PLATFORM / usr / lib-L $ PLATFORM / usr / 
lib-nostdlib $ PREBUILT / lib/gcc/arm-eabi/4.4.0/crtbegin.o $ PREBUILT/ 
lib/gcc/arm-eabi/4.4.0/crtend.o-lc-lm-ldl " 

. / Configure - host = arm - with-gnu-ld - enable-shared \ 

At the end of the assembly receive the following: configure: error: No 16 bit type found on this platform!

What could this mean? How to fix and properly configure the library? Maybe I can somehow easier you can configure the library?

Answer

Zuljin picture Zuljin · May 7, 2011

I think it is hard (or even impossible) to use ./configure script to build library for Android. Android has its own building system Android.mk for native code and I think this will be the easiest way to go. You have to prepare such makefile manually and then use ndk-build script that come with NDK. Together with NDK samples are installed and you can check there how such file may look like.

If you want to just run configure to generate config.h please follow this link http://warpedtimes.wordpress.com/2010/02/03/building-open-source-libraries-with-android-ndk/. It contains information that following set of parameters for ./configure might work

./configure –host=arm-eabi CC=arm-eabi-gcc CPPFLAGS=”-I$ANDROID_ROOT/build/platforms/android-3/arch-arm/usr/include/” CFLAGS=”-nostdlib” LDFLAGS=”-Wl,-rpath-link=$ANDROID_ROOT/build/platforms/android-3/arch-arm/usr/lib/ -L$ANDROID_ROOT/build/platforms/android-3/arch-arm/usr/lib/” LIBS=”-lc “