Support #1111
openexecv: Exec format error
0%
Description
I am getting the following errors after switching to crystax when I try to build my app:
arm-linux-androideabi-g++: error trying to exec '/Users/username/dev/SDKs/crystax-ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/as': execv: Exec format error
My main reason for trying crystal ndk is to get around the lack of math support since API 21 for older devices.
Updated by Dmitry M. over 9 years ago
This looks pretty strange. Could you describe bit more detailed how are you running build within Android Studio? Are you using AS NDK support plugin or build it calling ndk-build from CrystaX NDK? Also, it would be very helpful to see how exactly arm-linux-androideabi-g++ was called (full command line with all parameters).
Updated by Adam W. over 9 years ago
I am building it using the gradle plugin, just by hitting run/build in Android Studio. The build.gradle file looks like this: (I am using the JUCE library)
apply plugin: 'com.android.model.application' model { android { compileSdkVersion = 23 buildToolsVersion = "23.0.2" defaultConfig.with { applicationId = "com.yourcompany.nativenavigation" minSdkVersion.apiLevel = 11 targetSdkVersion.apiLevel = 23 } } compileOptions.with { sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7 } android.sources { main { jni { source { exclude "**/JuceModules/" } } } } android.ndk { moduleName = "juce_jni" stl = "gnustl_static" toolchainVersion = 4.9 ext { juceRootDir = "${project.rootDir}/../../../../".toString() juceModuleDir = "${juceRootDir}/modules".toString() } cppFlags += "-fsigned-char" cppFlags += "-fexceptions" cppFlags += "-frtti" cppFlags += "-std=gnu++11" cppFlags += "-DJUCER_ANDROIDSTUDIO_4330F05B=1" cppFlags += "-DJUCE_APP_VERSION=1.0.0" cppFlags += "-DJUCE_APP_VERSION_HEX=0x10000" cppFlags += "-DJUCE_ANDROID=1" cppFlags += "-DJUCE_ANDROID_ACTIVITY_CLASSNAME=com_codegarden_nativenavigation_JuceActivity" cppFlags += "-DJUCE_ANDROID_ACTIVITY_CLASSPATH=\"com/codegarden/nativenavigation/JuceActivity\"" cppFlags += "-I${project.rootDir}/app".toString() cppFlags += "-I${ext.juceRootDir}".toString() cppFlags += "-I${ext.juceModuleDir}".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/Source".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/Builds/iOS".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_audio_basics/buffers".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_audio_basics/midi".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_audio_basics/effects".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_audio_basics/sources".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_audio_basics/synthesisers".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_audio_basics".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_audio_devices/audio_io".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_audio_devices/midi_io".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_audio_devices/sources".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_audio_devices/audio_cd".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_audio_devices/native".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_audio_devices".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_audio_formats/format".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_audio_formats/codecs".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_audio_formats/sampler".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_audio_formats".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_audio_processors/processors".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_audio_processors/format".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_audio_processors/format_types".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_audio_processors/scanning".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_audio_processors".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_core/text".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_core/maths".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_core/memory".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_core/containers".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_core/threads".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_core/time".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_core/files".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_core/network".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_core/streams".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_core/logging".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_core/system".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_core/xml".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_core/javascript".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_core/zip".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_core/unit_tests".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_core/misc".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_core/native".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_core".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_cryptography/encryption".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_cryptography/hashing".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_cryptography".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_data_structures/values".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_data_structures/undomanager".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_data_structures/app_properties".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_data_structures".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_events/messages".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_events/timers".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_events/broadcasters".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_events/interprocess".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_events/native".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_events".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_graphics/colour".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_graphics/contexts".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_graphics/images".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_graphics/image_formats".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_graphics/geometry".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_graphics/placement".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_graphics/fonts".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_graphics/effects".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_graphics/native".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_graphics".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_basics/components".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_basics/mouse".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_basics/keyboard".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_basics/widgets".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_basics/windows".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_basics/menus".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_basics/layout".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_basics/buttons".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_basics/positioning".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_basics/drawables".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_basics/properties".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_basics/lookandfeel".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_basics/filebrowser".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_basics/commands".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_basics/misc".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_basics/application".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_basics/native".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_basics".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_extra/code_editor".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_extra/documents".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_extra/embedding".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_extra/misc".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_extra/native".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_gui_extra".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_opengl/opengl".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_opengl/geometry".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_opengl/utils".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_opengl/native".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_opengl".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_video/playback".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_video/capture".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_video/native".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/../../juce/modules/juce_video".toString() cppFlags += "-I/Users/adamelemental/dev/juce_projects/NativeNavigation/JuceLibraryCode".toString() ldLibs += ["android", "EGL", "GLESv2", "log"] } android.buildTypes { debug { ndk.with { debuggable = true cppFlags += "-g" cppFlags += "-DDEBUG=1" cppFlags += "-D_DEBUG=1" } } release { minifyEnabled = true proguardFiles += 'proguard-android-optimize.txt' ndk.with { cppFlags += "-DNDEBUG=1" } } } android.productFlavors { create("armeabi") { ndk.abiFilters += "armeabi" } create("armeabi-v7a") { ndk.abiFilters += "armeabi-v7a" } create("x86") { ndk.abiFilters += "x86" } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) //testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.1.0' compile 'com.android.support:support-v4:23.1.0' compile 'com.android.support:design:23.1.0'
Updated by Adam W. over 9 years ago
I don't know how to get the full command line for arm-linux-androideabi-g++ - I am new to Android Studio, was previously using ant for my android builds.
Updated by Adam W. over 9 years ago
The full text from the build output for one example file:
compiling juce_audio_devices.cpp failed.
arm-linux-androideabi-g++: error trying to exec '/Users/adamelemental/dev/SDKs/crystax-ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/as': execv: Exec format error
Updated by Dmitry M. over 9 years ago
Well, nothing critical, as I see. It should just work. This makes me think you have corrupted NDK installation. Please run this in Terminal:
/Users/adamelemental/dev/SDKs/crystax-ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/as --version
Is it works? If no, then your NDK installation is corrupted for some reason - re-download and unpack it again.