Error compiling libgcc.a when cross compiling for Android, but are there symbols?

I am trying to cross-compile a very simple Android program that has worked with android-ndk-r6b and earlier, but does not work on android-ndk-r7 and newer:

int main() { ; return 0; } 

I was able to do this using the "agcc" script in an older version of Android, which can be found here . I sincerely do not try to use the Android.mk file to create it. I know I can, but it's part of something much bigger that I'm working on. So take it for the face value that I am trying to cross-compile differently.

Anyway, I'm trying to build and get:

 $ arm-eabi-gcc -o test test.c /home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/../../../../arm-eabi/bin/ld: warning: /tmp/cc00QD3x.o uses variable-size enums yet the output is to use 32-bit enums; use of enum values across objects may fail /tmp/cc00QD3x.o:(.ARM.exidx.text.main+0x0): undefined reference to `__aeabi_unwind_cpp_pr0' collect2: ld returned 1 exit status 

So, the key error is the undefined link to __aeabi_unwind_cpp_pr0.

After some digging, this symbol is in libgcc.a, with which I refer:

 $ arm-eabi-nm /home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/lib/gcc/arm-eabi/4.4.3/libgcc.a | grep __aeabi_unwind_cpp_pr0 U __aeabi_unwind_cpp_pr0 U __aeabi_unwind_cpp_pr0 U __aeabi_unwind_cpp_pr0 U __aeabi_unwind_cpp_pr0 U __aeabi_unwind_cpp_pr0 U __aeabi_unwind_cpp_pr0 U __aeabi_unwind_cpp_pr0 00000590 T __aeabi_unwind_cpp_pr0 U __aeabi_unwind_cpp_pr0 U __aeabi_unwind_cpp_pr0 

It has a 'T' that tells me that it is in code somewhere, right?

Here is the detailed output of arm-eabi-gcc, which shows that I am actually referring to this library:

 Using built-in specs. Target: arm-eabi Configured with: /home/jingyu/projects/gcc/android-toolchainsrc/build/../gcc/gcc-4.4.3/configure --prefix=/usr/local --target=arm-eabi --host=x86_64-linux-gnu --build=x86_64-linux-gnu --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --with-gmp=/home/jingyu/projects/gcc/toolchain_build/obj/temp-install --with-mpfr=/home/jingyu/projects/gcc/toolchain_build/obj/temp-install --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --disable-tls --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --with-abi=aapcs --with-gcc-version=4.4.3 --with-binutils-version=2.19 --with-gmp-version=4.2.4 --with-mpfr-version=2.4.1 --with-gdb-version=7.1.x --with-arch=armv5te --with-multilib-list=mandroid --with-sysroot=/usr/local/google/home/android/cupcake_rel_root --program-transform-name='s&^&arm-eabi-&' Thread model: single gcc version 4.4.3 (GCC) COLLECT_GCC_OPTIONS='-o' 'test' '-I/home/gnychis/Documents/android/os/system/core/include' '-I/home/gnychis/Documents/android/os/hardware/libhardware/include' '-I/home/gnychis/Documents/android/os/hardware/ril/include' '-I/home/gnychis/Documents/android/android-ndk-r7b/platforms/android-9/arch-arm/usr/include' '-I/home/gnychis/Documents/android/os/dalvik/libnativehelper/include' '-I/home/gnychis/Documents/android/os/frameworks/base/include' '-I/home/gnychis/Documents/android/os/external/skia/include' '-I/home/gnychis/Documents/android/os/out/target/product/generic/obj/include' '-I/home/gnychis/Documents/android/os/bionic/libc/arch-arm/include' '-I/home/gnychis/Documents/android/os/bionic/libc/include' '-I/home/gnychis/Documents/android/os/bionic/libstdc++/include' '-I/home/gnychis/Documents/android/os/bionic/libc/kernel/common' '-I/home/gnychis/Documents/android/os/bionic/libc/kernel/arch-arm' '-I/home/gnychis/Documents/android/os/bionic/libm/include' '-I/home/gnychis/Documents/android/os/bionic/libm/include/arch/arm' '-I/home/gnychis/Documents/android/os/bionic/libthread_db/include' '-I/home/gnychis/Documents/android/os/bionic/libm/arm' '-I/home/gnychis/Documents/android/os/bionic/libm' '-I/home/gnychis/Documents/android/os/out/target/product/generic/obj/SHARED_LIBRARIES/libm_intermediates' '-D__ARM_ARCH_5__' '-D__ARM_ARCH_5T__' '-D__ARM_ARCH_5E__' '-D__ARM_ARCH_5TE__' '-DANDROID' '-DSK_RELEASE' '-DNDEBUG' '-UDEBUG' '-march=armv5te' '-mtune=xscale' '-msoft-float' '-mthumb-interwork' '-fpic' '-fno-exceptions' '-ffunction-sections' '-funwind-tables' '-fstack-protector' '-fmessage-length=0' '-Bdynamic' '-L/home/gnychis/Documents/android/android-ndk-r7b/platforms/android-9/arch-arm/usr/lib' '-nostdlib' '-v' '-mfpu=vfp' '-mabi=aapcs' /home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../libexec/gcc/arm-eabi/4.4.3/cc1 -quiet -v -I/home/gnychis/Documents/android/os/system/core/include -I/home/gnychis/Documents/android/os/hardware/libhardware/include -I/home/gnychis/Documents/android/os/hardware/ril/include -I/home/gnychis/Documents/android/android-ndk-r7b/platforms/android-9/arch-arm/usr/include -I/home/gnychis/Documents/android/os/dalvik/libnativehelper/include -I/home/gnychis/Documents/android/os/frameworks/base/include -I/home/gnychis/Documents/android/os/external/skia/include -I/home/gnychis/Documents/android/os/out/target/product/generic/obj/include -I/home/gnychis/Documents/android/os/bionic/libc/arch-arm/include -I/home/gnychis/Documents/android/os/bionic/libc/include -I/home/gnychis/Documents/android/os/bionic/libstdc++/include -I/home/gnychis/Documents/android/os/bionic/libc/kernel/common -I/home/gnychis/Documents/android/os/bionic/libc/kernel/arch-arm -I/home/gnychis/Documents/android/os/bionic/libm/include -I/home/gnychis/Documents/android/os/bionic/libm/include/arch/arm -I/home/gnychis/Documents/android/os/bionic/libthread_db/include -I/home/gnychis/Documents/android/os/bionic/libm/arm -I/home/gnychis/Documents/android/os/bionic/libm -I/home/gnychis/Documents/android/os/out/target/product/generic/obj/SHARED_LIBRARIES/libm_intermediates -iprefix /home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/ -D__USES_INITFINI__ -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -DANDROID -DSK_RELEASE -DNDEBUG -UDEBUG test.c -quiet -dumpbase test.c -march=armv5te -mtune=xscale -msoft-float -mthumb-interwork -mfpu=vfp -mabi=aapcs -auxbase test -version -fpic -fno-exceptions -ffunction-sections -funwind-tables -fstack-protector -fmessage-length=0 -o /tmp/ccIIp1N2.s GNU C (GCC) version 4.4.3 (arm-eabi) compiled by GNU C version 4.2.4 (Ubuntu 4.2.4-1ubuntu4), GMP version 4.2.4, MPFR version 2.4.1. GGC heuristics: --param ggc-min-expand=98 --param ggc-min-heapsize=128206 ignoring nonexistent directory "/home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/../../../../arm-eabi/include" ignoring nonexistent directory "/usr/local/google/home/android/cupcake_rel_root/usr/local/include" ignoring duplicate directory "/home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/../../lib/gcc/arm-eabi/4.4.3/include" ignoring duplicate directory "/home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/../../lib/gcc/arm-eabi/4.4.3/include-fixed" ignoring nonexistent directory "/home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/../../lib/gcc/arm-eabi/4.4.3/../../../../arm-eabi/include" ignoring nonexistent directory "/usr/local/google/home/android/cupcake_rel_root/usr/include" ignoring nonexistent directory "/home/gnychis/Documents/android/os/out/target/product/generic/obj/include" ignoring nonexistent directory "/home/gnychis/Documents/android/os/bionic/libm/include/arch/arm" ignoring nonexistent directory "/home/gnychis/Documents/android/os/out/target/product/generic/obj/SHARED_LIBRARIES/libm_intermediates" #include "..." search starts here: #include <...> search starts here: /home/gnychis/Documents/android/os/system/core/include /home/gnychis/Documents/android/os/hardware/libhardware/include /home/gnychis/Documents/android/os/hardware/ril/include /home/gnychis/Documents/android/android-ndk-r7b/platforms/android-9/arch-arm/usr/include /home/gnychis/Documents/android/os/dalvik/libnativehelper/include /home/gnychis/Documents/android/os/frameworks/base/include /home/gnychis/Documents/android/os/external/skia/include /home/gnychis/Documents/android/os/bionic/libc/arch-arm/include /home/gnychis/Documents/android/os/bionic/libc/include /home/gnychis/Documents/android/os/bionic/libstdc++/include /home/gnychis/Documents/android/os/bionic/libc/kernel/common /home/gnychis/Documents/android/os/bionic/libc/kernel/arch-arm /home/gnychis/Documents/android/os/bionic/libm/include /home/gnychis/Documents/android/os/bionic/libthread_db/include /home/gnychis/Documents/android/os/bionic/libm/arm /home/gnychis/Documents/android/os/bionic/libm /home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/include /home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/include-fixed End of search list. GNU C (GCC) version 4.4.3 (arm-eabi) compiled by GNU C version 4.2.4 (Ubuntu 4.2.4-1ubuntu4), GMP version 4.2.4, MPFR version 2.4.1. GGC heuristics: --param ggc-min-expand=98 --param ggc-min-heapsize=128206 Compiler executable checksum: c575b4a30c8a516a84cf6e49f2cb23d1 COLLECT_GCC_OPTIONS='-o' 'test' '-I/home/gnychis/Documents/android/os/system/core/include' '-I/home/gnychis/Documents/android/os/hardware/libhardware/include' '-I/home/gnychis/Documents/android/os/hardware/ril/include' '-I/home/gnychis/Documents/android/android-ndk-r7b/platforms/android-9/arch-arm/usr/include' '-I/home/gnychis/Documents/android/os/dalvik/libnativehelper/include' '-I/home/gnychis/Documents/android/os/frameworks/base/include' '-I/home/gnychis/Documents/android/os/external/skia/include' '-I/home/gnychis/Documents/android/os/out/target/product/generic/obj/include' '-I/home/gnychis/Documents/android/os/bionic/libc/arch-arm/include' '-I/home/gnychis/Documents/android/os/bionic/libc/include' '-I/home/gnychis/Documents/android/os/bionic/libstdc++/include' '-I/home/gnychis/Documents/android/os/bionic/libc/kernel/common' '-I/home/gnychis/Documents/android/os/bionic/libc/kernel/arch-arm' '-I/home/gnychis/Documents/android/os/bionic/libm/include' '-I/home/gnychis/Documents/android/os/bionic/libm/include/arch/arm' '-I/home/gnychis/Documents/android/os/bionic/libthread_db/include' '-I/home/gnychis/Documents/android/os/bionic/libm/arm' '-I/home/gnychis/Documents/android/os/bionic/libm' '-I/home/gnychis/Documents/android/os/out/target/product/generic/obj/SHARED_LIBRARIES/libm_intermediates' '-D__ARM_ARCH_5__' '-D__ARM_ARCH_5T__' '-D__ARM_ARCH_5E__' '-D__ARM_ARCH_5TE__' '-DANDROID' '-DSK_RELEASE' '-DNDEBUG' '-UDEBUG' '-march=armv5te' '-mtune=xscale' '-msoft-float' '-mthumb-interwork' '-fpic' '-fno-exceptions' '-ffunction-sections' '-funwind-tables' '-fstack-protector' '-fmessage-length=0' '-Bdynamic' '-L/home/gnychis/Documents/android/android-ndk-r7b/platforms/android-9/arch-arm/usr/lib' '-nostdlib' '-v' '-mfpu=vfp' '-mabi=aapcs' /home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/../../../../arm-eabi/bin/as -v -I/home/gnychis/Documents/android/os/system/core/include -I/home/gnychis/Documents/android/os/hardware/libhardware/include -I/home/gnychis/Documents/android/os/hardware/ril/include -I/home/gnychis/Documents/android/android-ndk-r7b/platforms/android-9/arch-arm/usr/include -I/home/gnychis/Documents/android/os/dalvik/libnativehelper/include -I/home/gnychis/Documents/android/os/frameworks/base/include -I/home/gnychis/Documents/android/os/external/skia/include -I/home/gnychis/Documents/android/os/out/target/product/generic/obj/include -I/home/gnychis/Documents/android/os/bionic/libc/arch-arm/include -I/home/gnychis/Documents/android/os/bionic/libc/include -I/home/gnychis/Documents/android/os/bionic/libstdc++/include -I/home/gnychis/Documents/android/os/bionic/libc/kernel/common -I/home/gnychis/Documents/android/os/bionic/libc/kernel/arch-arm -I/home/gnychis/Documents/android/os/bionic/libm/include -I/home/gnychis/Documents/android/os/bionic/libm/include/arch/arm -I/home/gnychis/Documents/android/os/bionic/libthread_db/include -I/home/gnychis/Documents/android/os/bionic/libm/arm -I/home/gnychis/Documents/android/os/bionic/libm -I/home/gnychis/Documents/android/os/out/target/product/generic/obj/SHARED_LIBRARIES/libm_intermediates -march=armv5te -mthumb-interwork -mfloat-abi=soft -mfpu=vfp -meabi=5 -o /tmp/ccGAKjxX.o /tmp/ccIIp1N2.s GNU assembler version 2.19 (arm-eabi) using BFD version (GNU Binutils) 2.19 COMPILER_PATH=/home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../libexec/gcc/arm-eabi/4.4.3/:/home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../libexec/gcc/:/home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/../../../../arm-eabi/bin/ LIBRARY_PATH=/home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/:/home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/:/home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/../../../../arm-eabi/lib/ COLLECT_GCC_OPTIONS='-o' 'test' '-I/home/gnychis/Documents/android/os/system/core/include' '-I/home/gnychis/Documents/android/os/hardware/libhardware/include' '-I/home/gnychis/Documents/android/os/hardware/ril/include' '-I/home/gnychis/Documents/android/android-ndk-r7b/platforms/android-9/arch-arm/usr/include' '-I/home/gnychis/Documents/android/os/dalvik/libnativehelper/include' '-I/home/gnychis/Documents/android/os/frameworks/base/include' '-I/home/gnychis/Documents/android/os/external/skia/include' '-I/home/gnychis/Documents/android/os/out/target/product/generic/obj/include' '-I/home/gnychis/Documents/android/os/bionic/libc/arch-arm/include' '-I/home/gnychis/Documents/android/os/bionic/libc/include' '-I/home/gnychis/Documents/android/os/bionic/libstdc++/include' '-I/home/gnychis/Documents/android/os/bionic/libc/kernel/common' '-I/home/gnychis/Documents/android/os/bionic/libc/kernel/arch-arm' '-I/home/gnychis/Documents/android/os/bionic/libm/include' '-I/home/gnychis/Documents/android/os/bionic/libm/include/arch/arm' '-I/home/gnychis/Documents/android/os/bionic/libthread_db/include' '-I/home/gnychis/Documents/android/os/bionic/libm/arm' '-I/home/gnychis/Documents/android/os/bionic/libm' '-I/home/gnychis/Documents/android/os/out/target/product/generic/obj/SHARED_LIBRARIES/libm_intermediates' '-D__ARM_ARCH_5__' '-D__ARM_ARCH_5T__' '-D__ARM_ARCH_5E__' '-D__ARM_ARCH_5TE__' '-DANDROID' '-DSK_RELEASE' '-DNDEBUG' '-UDEBUG' '-march=armv5te' '-mtune=xscale' '-msoft-float' '-mthumb-interwork' '-fpic' '-fno-exceptions' '-ffunction-sections' '-funwind-tables' '-fstack-protector' '-fmessage-length=0' '-Bdynamic' '-L/home/gnychis/Documents/android/android-ndk-r7b/platforms/android-9/arch-arm/usr/lib' '-nostdlib' '-v' '-mfpu=vfp' '-mabi=aapcs' /home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../libexec/gcc/arm-eabi/4.4.3/collect2 --sysroot=/usr/local/google/home/android/cupcake_rel_root -X -o test -L/home/gnychis/Documents/android/android-ndk-r7b/platforms/android-9/arch-arm/usr/lib -L/home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3 -L/home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc -L/home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/../../../../arm-eabi/lib -T /home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/arm-eabi/lib/ldscripts/armelf.x -dynamic-linker /system/bin/linker --gc-sections -z nocopyreloc --no-undefined -rpath-link=/home/gnychis/Documents/android/android-ndk-r7b/platforms/android-9/arch-arm/usr/lib /home/gnychis/Documents/android/android-ndk-r7b/platforms/android-9/arch-arm/usr/lib/crtend_android.o /home/gnychis/Documents/android/android-ndk-r7b/platforms/android-9/arch-arm/usr/lib/crtbegin_dynamic.o /home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/lib32/libiberty.a /home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/lib/gcc/arm-eabi/4.4.3/libgcc.a -lc -lm /tmp/ccGAKjxX.o /home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/../../../../arm-eabi/bin/ld: warning: /tmp/ccGAKjxX.o uses variable-size enums yet the output is to use 32-bit enums; use of enum values across objects may fail /tmp/ccGAKjxX.o:(.ARM.exidx.text.main+0x0): undefined reference to `__aeabi_unwind_cpp_pr0' collect2: ld returned 1 exit status 

So I'm a little unsure why I get this link undefined. I used the same cross compilation method with a slightly different version of Android and had no problems.

Does anything make anyone different?


EDIT: Created actual command:

arm-eabi-gcc -o test -I / home / gnychis / Documents android / os / system / core / include -I / home / gnychis / Documents / android / os / hardware / libhardware / include -I / home / gnychis / Documents android / os / hardware / ril / include -I / home / gnychis / Documents android / os / dalvik / libnativehelper / include -I / home / gnychis / Documents android / os / frameworks / base / including / i / home / gnychis / Documents android / os / external / skia / include -I / home / gnychis / Documents / android / os / out / target / product / generic / obj / include -I / home / gnychis / Documents / android / os / bionic / libc / arch-arm / include -I / home / gnychis / Documents android / os / bionic / libc / include -I / home / gnychis / Documents / android / os / bionic / libstd ++ / include -I / home / gnychis / Documents / android / os / bionic / libc / kernel / common -I / home / gnychis / Documents android / os / bionic / libc / kernel / arch-arm -I / home / gnychis / Documents / android / os / bionic / libm / include -I / home / gnychis / Documents / android / os / bionic / libm / include / arch / arm -I / home / gnychis / Documents / android / os / bionic / libthread_db / enable -I / home / gnychis / Documents / andr oid / os / bionic / libm / arm -I / home / gnychis / Documents android / os / bionic / libm -I / home / gnychis / Documents android / os / out / target / product / generic / obj / SHARED_LIBRARIES / libm_intermediates -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -DANDROID -DSK_RELEASE -DNDEBUG -include / home / gnychux os archive-documents system h -UDEBUG -march = armv5te - mtune = xscale -msoft-float -mthumb-interwork -fpic -fno-exceptions -ffunction-sections -funwind-tables -fstack-protector -fmessage-length = 0 -Bdynamic -Wl, -T , / home / gnychis / Documents / android / os / build / core / armelf.x -Wl, -dynamic linker, / system / bin / linker -Wl, -gc-sections -Wl, -z, nocopyreloc -Wl, - no- undefined -Wl, -rpath-link = / home / gnychis / Documents android / os /../ android-ndk-r7b / platform / android-9 / arch-arm / usr / lib -L / home / gnychis / Documents / android / os /../ android-ndk-r7b / platform / android-9 / arch-arm / usr / lib -nostdlib / home / gnychis /Documents/android/os/../android-ndk-r7b/platforms/Android-9/ lever arches / USR / Li b / crtend_android.o / home / gnychis / Documents / android / os /../ android-ndk -r7b / platforms / android-9 / arch-arm / usr / lib / crtbegin_dynamic.o / home / gnychis / Documents / android / os / prebuilt / linux-x86 / toolchain / arm-eabi-4.4.3 / lib / gcc /arm-eabi/4.4.3/libgcc.a -lc -lm test.c

+3
source share
2 answers

Here is your link, broken into several lines, for clarity:

 /home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../libexec/gcc/arm-eabi/4.4.3/collect2 \ --sysroot=/usr/local/google/home/android/cupcake_rel_root \ -X \ -o test \ -L/home/gnychis/Documents/android/android-ndk-r7b/platforms/android-9/arch-arm/usr/lib \ -L/home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3 \ -L/home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc -L/home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/../../../../arm-eabi/lib -T /home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/arm-eabi/lib/ldscripts/armelf.x \ -dynamic-linker /system/bin/linker \ --gc-sections \ -z nocopyreloc \ --no-undefined \ -rpath-link=/home/gnychis/Documents/android/android-ndk-r7b/platforms/android-9/arch-arm/usr/lib \ /home/gnychis/Documents/android/android-ndk-r7b/platforms/android-9/arch-arm/usr/lib/crtend_android.o \ /home/gnychis/Documents/android/android-ndk-r7b/platforms/android-9/arch-arm/usr/lib/crtbegin_dynamic.o \ /home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/lib32/libiberty.a \ /home/gnychis/Documents/android/os/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/lib/gcc/arm-eabi/4.4.3/libgcc.a \ -lc \ -lm \ /tmp/ccGAKjxX.o 

As you can see, your own object file (temporary) is the last item on the command line. This is simply wrong. It should be in front of the libraries, at least if it is properly linked.

Basically, your agcc script passes -nostdlib (which says you know better), and then pass the libraries manually, but you do it in the completely wrong order. If you fix it, everything should be fine.

The order of the links is very important. Objects and libraries that provide symbols must be linked after objects and libraries that require symbols.

There were certain versions of tools that could tolerate poor ordering, but I think it was an error or a wrong function, because the new tools cannot and should not. Presumably, this script was written for one of them.

+7
source

Where to find: __aeabi_unwind_cpp_pr0 and other mysterious functions undefined

(I had a similar problem error with what you described, but found another solution that may be useful for you or others)

I found the libgccunwind.a library in the Google NDK package that defines a number of these mysterious functions (these are functions referenced by libc.a and other libraries in the NDK package but not defined in the standard library) I found them defined in the libgccunwind.a library in:

\ Sources \ Android \ gccunwind \ LIES \ armeabi

NM shows that they are defined in this lib from the file "unwind-arm.o":

 nm libgccunwind.a unwind-arm.o: U _GLOBAL_OFFSET_TABLE_ 00000cf8 T _Unwind_Complete 00000cfc T _Unwind_DeleteException 00000ba4 T _Unwind_GetCFA 00000408 t _Unwind_GetGR 00000474 t _Unwind_SetGR 000003c4 T _Unwind_VRS_Get 0000084c T _Unwind_VRS_Pop 00000430 T _Unwind_VRS_Set 00000844 T __aeabi_unwind_cpp_pr0 0000083c W __aeabi_unwind_cpp_pr1 00000834 W __aeabi_unwind_cpp_pr2 w __cxa_begin_cleanup w __cxa_call_unexpected w __cxa_type_match U __exidx_end U __exidx_start 00000d1c T __gnu_Unwind_Backtrace w __gnu_Unwind_Find_exidx 

Regardless of libgccunwind.a above, I searched __aeabi_unwind_cpp_pr0 and unwind-arm.c and unwind.c and found various sources of c, for example:

http://lxr.free-electrons.com/source/arch/arm/kernel/unwind.c?a=arm

http://opensource.apple.com/source/gcc/gcc-5646/gcc/config/arm/unwind-arm.c

These programs are apparently derived from a similar source. I assume that these "unwind_cpp" (and related functions) are called by functions in libc.a when the function returns or on certain events so that these functions can perform some debug or trace operation.

In any case, adding this directory to the -L-linker option and the -lgccunwind-linker option (after the -lc linker option) allowed the linker to find these functions undefined ', and let me move on to the next problem that I have in cross-compiling on ARM systems .

+1
source

All Articles