2012-03-05 18 views
3
私がしようとしています

は、Android-NDK R6B前でを働いたことのAndroidのための非常に簡単なプログラムをクロスコンパイルが、アンドロイド-NDK R7以降にない作業を行います。Android用のクロスコンパイル時にlibgcc.aにリンクするとエラーが発生しますが、シンボルは存在しますか?

int main() { 
    ; 
    return 0; 
} 

hereという古いバージョンのAndroidで「agcc」スクリプトを使用していました。私は心からAndroid.mkファイルを使ってこれを構築しようとしていません。私はできることは知っていますが、これは私が取り組んでいるもっと大きなものの一部です。だから私はこれを別の方法でクロスコンパイルしようとしています。

とにかく、私が構築し、取得しよう:

$ 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 

ので、キーエラーが__aeabi_unwind_cpp_pr0に未定義の参照です。いくつかの掘削を行った後

、このシンボルは私がにリンクしていたのlibgcc.aである:

$ 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 

それは右、それはどこかのコードであることを私に語った「T」を持って?

ここで私はこのライブラリにリンク実際には午前示しアーム-EABI-GCCの冗長出力は次のようになります。

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 

は、だから私は、私はこの未定義の参照を取得していますなぜ少しだけわかりませんよ。私はこの同じクロスコンパイルの方法を少し違ったバージョンのAndroidで使いましたが問題はありませんでした。

誰にも目立つものはありますか?


EDIT:生成された実際のコマンドは、以下である:

アームEABI-GCC -oテスト-I /ホーム/ gnychis /ドキュメント/アンドロイド/ OS /システム/コア/含みます - ホーム/ gnychis /ドキュメント/アンドロイド/ os/dalvik /ドキュメント/アンドロイド/ホーム/ gnychis /ドキュメント/アンドロイド/ os /外部/スキア/インクルード-I /ホーム/ gnychis /ドキュメント/アンドロイド/ libnativehelper /インクルード-I /ホーム/ gnychis /ドキュメント/アンドロイド/ os /フレームワーク/ベース/ os/out/target/product/generic/obj/include -I/home/gnychis/Documents /アンドロイド/ os/bionic/libc/arch-arm/include -I/home/gnychis/Documeホーム/ gnychis /ドキュメント/アンドロイド/ os /バイオニック/ libstdC++ /インクルード-I /ホーム/ gnychis /ドキュメント/アンドロイド/ os /バイオニック/ libc /カーネル/コモン - nios/android/os/bionic /ホーム/ gnychis /ドキュメント/アンドロイド/ os /バイオニック/ libm /インクルード-I/home/gnychis /ドキュメント/アンドロイド/ lib/arm -I/home/gnychis /ドキュメント/アンドロイド/ os /バイオニック/ libthread_db/include -I /ホーム/ gnychis /ドキュメント/アンドロイド/ os /バイオニック/ libm/arm -I /ホーム/ gnychis /ドキュメント/アンドロイド/ os /バイオニック/ libm -I /ホーム/ gnychis /ドキュメント/アンドロイド/ os /アウト/ターゲット/プロダクト/ジェネリック/ 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/gnychis/Documents/android/os/system/core/include/arch/linux-arm/AndroidConfig.h -UDEBUG -march = armv5te -mtune = xscale -msoft-float -mthumb-interwork - fpic -fno-exceptions -function-sections -funwind-tables -fstack-protector -fmessage-length = 0 -Bdynamic -Wl、-T、/ h/lib/linker -Wl、-gc-sections -Wl、-z、nocopyreloc -Wl、-wl、-y、/-lpath-link =/home/gnychis /ドキュメント/アンドロイド/ os /../アンドロイド-ndk-r7b /プラットフォーム/アンドロイド-9 /アーチアーム/ usr/lib -L ​​/ home/gnychis/Documents /アンドロイド/ os/../ android-ndk-r7b /プラットフォーム/ android-9/arch-arm/usr/lib -nostdlib /home/gnychis/Documents/android/os/../android-ndk-r7b/platforms/android-9/arch- arm/usr/lib/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

+0

NDK-6とNDK-6bではこのエラーは発生しません。しかし、NDK-7とNDK-7bではこのエラーが発生します。何かが変わったはずです。私はコンパイラ/リンクフラグのいくつかの並べ替えを今すぐ欠場ですか? – gnychis

答えて

7
わかりやすくするために複数の行に分けて、同様にここで

があなたのリンクです:

/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 

あなたが見ることができるように、独自のオブジェクトファイル(一時的な)は、コマンドライン上で非常に最後の項目です。これは間違っています。ライブラリを正しくリンクするには、少なくともライブラリの前にある必要があります。

agccスクリプトは基本的には-nostdlib(これはあなたがよく知っていると言います)を渡してからライブラリを手動で渡しますが、間違った順序で実行します。これを修正すれば、すべてがうまくいくはずです。

リンクの順序は非常に重要です。 が提供するオブジェクトとライブラリシンボルは、にオブジェクトとライブラリの後にリンクされ、シンボルが必要です。

不適切な順序付けを許容する特定のバージョンのツールがありましたが、新しいツールチェーンではできないし、そうでなければならないため、バグまたは誤った機能でした。おそらく、このスクリプトは、それらのスクリプトの1つのために書かれたものと思われます。

+0

あなたの応答の束をありがとう、私はあなたのソリューションについて非常に有望です:)私は自分のオブジェクトファイルがライブラリの前にリンクされていることをどのように強制することができますかについて私は興味があります。私はagccによって生成されたコマンドを含めるために自分の投稿を編集しました。私はどのようにライブラリの先に一時オブジェクトファイルを強制的に変更するか分からない。それを理解できれば、私はagccスクリプトを編集する方法を知っています。 – gnychis

+0

まずは.cファイルを先に置いてください。 – ams

+0

だから...シンプルだ...:D私はあなたの賞金をすぐに授与します、それは私が7時間待たなければならないと言います。 – gnychis

1
見つけること

:__aeabi_unwind_cpp_pr0や他の神秘的な、未定義の関数

(私はあなたや他の人に役立つかもしれない別の解決策を、あなたが記述するものと同様の問題のエラーがあったが、見つかりました)

これらの不思議な機能を定義しているGoogle NDKパッケージにlibgccunwind.aライブラリがあります(これらはlibc.aとNDKパッケージの他のライブラリで参照されていますが、標準ライブラリでは定義されていません)これらはlibgccunwind.aライブラリで次のように定義されています。

\ソース\ androidの\ gccunwind \ libsに\ armeabi

NMは、彼らが 'くつろぎ-arm.oを' ファイルから、そのlibに定義されていることを示しています

上記libgccunwind.aの
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 

独立しました、Iは__aeabi_unwind_cpp_pr0検索ととunwind.c-arm.cをリラックス、例えば、種々のCソースを発見した:

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

これらのプログラムは、同様のソースから派生したようです。私の推測では、関数が返るときや特定のイベントでこれらの関数がいくつかのデバッグやトレース操作を行うことができるように、これらの 'unwind_cpp'(および関連する関数)はlibc.aの関数によって呼び出されます。

いずれの場合でも、-Lリンカーオプションと-lgccunwindリンカーオプション(-lcリンカーオプションの後)にそのディレクトリーを追加すると、リンカーはそれらの未定義関数を見つけることができます。私はARMシステムにクロスコンパイルしています。

関連する問題