'configure' failing with Android NDK standalone toolchain
Asked Answered
D

2

5

I'm trying to build something with the Android NDK standalone compiler toolchain, but I'm getting this error:

Updating bundled third-party dependencies...

bash -c 'mkdir -p output/{debug,release,test}/{FCollada/{FCDocument,FMath,FUtils,FColladaTest/{FCTestAssetManagement,FCTestExportImport,FCTestXRef}},FColladaPlugins/FArchiveXML}'
cp output/libFColladaSD.a ../lib/libFColladaSD.a
cp output/libFColladaSR.a ../lib/libFColladaSR.a

Building SpiderMonkey...

SpiderMonkey build options: --disable-tests         
loading cache ./config.cache
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking build system type... x86_64-unknown-linux-gnu
checking for mawk... mawk
checking for perl5... no
checking for perl... /usr/bin/perl
checking for gcc... gcc
checking whether the C compiler (gcc  ) works... yes
checking whether the C compiler (gcc  ) is a cross-compiler... no
checking whether we are using GNU C... yes
checking whether gcc accepts -g... yes
checking for c++... arm-linux-androideabi-g++
checking whether the C++ compiler (arm-linux-androideabi-g++  ) works... no
configure: error: installation or configuration problem: C++ compiler cannot create executables.
ERROR: SpiderMonkey build failed

This is what the config.log says: http://pastebin.com/5AFZG4CX

My ANDROID_NDK_ROOT is set as follows:

afeder@ubuntu:~/android/0ad/build/workspaces$ echo $ANDROID_NDK_ROOT
/home/afeder/android/android-ndk-r7-crystax-4

What might be the cause or how do I debug it? Thank you.

Delapaz answered 20/1, 2012 at 12:1 Comment(2)
What does config.log say? Can you upload it?Purulence
This is what the config.log says: pastebin.com/5AFZG4CXDelapaz
P
10

To me this looks broken:

checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking build system type... x86_64-unknown-linux-gnu

Here's how I'd set up the environment for my Android NDK build:

export CROSS_COMPILE=arm-linux-androideabi
export CC=${CROSS_COMPILE}-gcc
export CXX=${CROSS_COMPILE}-g++

... other binutils as needed ...

export NDK=/home/afeder/android/android-ndk-r7-crystax-4
export SYSROOT=$NDK/platforms/android-8/arch-arm
PATH=$PATH:$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin

Make sure and add --sysroot=$SYSROOT to CFLAGS, CPPFLAGS, and/or CXXFLAGS.

Now you need to tell the spidermonkey configure that you are cross compiling:

./configure --build=x86_64-unknown-linux-gnu --host=arm-linux-androideabi --target=arm-linux-androideabi
Personalism answered 20/1, 2012 at 22:59 Comment(1)
--sysroot=$SYSROOT also needs to go to the preprocessor flags variable CPPFLAGS. Please update your answer with that for an upvote .Canale
P
2

It looks like it can't find arm-linux-androideabi-g++. Try searching for it in the NDK folder and adding the directory to your PATH.

Mine is here:

ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-g++
Purulence answered 20/1, 2012 at 12:21 Comment(3)
That was my thought too, but arm-linux-androideabi-g++ does appear to be in my PATH and if I just run arm-linux-androideabi-g++ off the command-line, it finds it well enough.Delapaz
Do you have an ANDROID_NDK_ROOT environment variable set?Purulence
Yes, ANDROID_NDK_ROOT is set to /home/afeder/android/android-ndk-r7-crystax-4.Delapaz

© 2022 - 2024 — McMap. All rights reserved.