错误链接时交叉编译为Android将对libgcc.a,但符号的存在?将对、符号、译为、错误

2023-09-04 10:19:00 作者:人帅被人欺

我试图为Android交叉编译一个非常简单的程序,它的工作的与Android的NDK-R6B和以前的,但确实的没有的工作Android的ndk- R7和更新的:

  INT主要(){
  ;
  返回0;
}
 

我能够做到用海湾合作委员会的剧本在Android上的旧版本,可以发现这里。我真诚地不试图用一个Android.mk文件来建立这个。我知道我可以,但是这东西大得多我工作的一部分。所以把它的面值,我试图用不同的方式交叉编译这一点。

不管怎样,我尝试建立并获得:

  $臂EABI-gcc的-o测试test.c的
/home/gnychis/Documents/android/os/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/../../../../arm-eabi/bin/ld:警告:/tmp/cc00QD3x.o使用可变大小枚举但输出是用32位的枚举;跨对象使用枚举值可能会失败
/tmp/cc00QD3x.o:(.ARM.exidx.text.main+0x0):未定义的参考`__aeabi_unwind_cpp_pr0
collect2:劳工处返回1退出状态
 

所以,关键的错误是不确定的参考__aeabi_unwind_cpp_pr0。

做一些挖掘后,这个符号是libgcc.a中对此我链接到:

  $臂EABI纳米/home/gnychis/Documents/android/os/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/lib/gcc/arm-eabi/4.4.3/libgcc.a | grep的__aeabi_unwind_cpp_pr0
         ü__aeabi_unwind_cpp_pr0
         ü__aeabi_unwind_cpp_pr0
         ü__aeabi_unwind_cpp_pr0
         ü__aeabi_unwind_cpp_pr0
         ü__aeabi_unwind_cpp_pr0
         ü__aeabi_unwind_cpp_pr0
         ü__aeabi_unwind_cpp_pr0
00000590牛逼__aeabi_unwind_cpp_pr0
         ü__aeabi_unwind_cpp_pr0
         ü__aeabi_unwind_cpp_pr0
 
编译时出现的错误怎么解决

它有一个T它告诉我,这是在code的地方,对吧?

下面是arm-EABI-GCC的详细信息,显示我其实链接到该库:

 使用内置的规格。
目标:手臂,EABI
配置有:/home/jingyu/projects/gcc/android-toolchainsrc/build/../gcc/gcc-4.4.3/configure  -  preFIX =的/ usr /本地--target =臂EABI  - 主机= x86_64的Linux的GNU的--build = x86_64的Linux的GNU的--with-GNU-为--with-GNU-LD --enable-语言= C,C ++ --with-GMP = /家庭/靖宇/项目/ GCC / toolchain_build / OBJ /临时安装--with-MPFR = /家庭/靖宇/项目/ GCC / toolchain_build / OBJ /临时安装 - 禁用libssp --enable-线程--disable-NLS  - 禁用-libmudflap  - 禁用libgomp  - 禁用的libstdc __- V3  - 禁用sjlj-例外 - 禁用共享--disable-TLS --with浮=软--with-FPU = VFP --with- ARCH =的ARMv5TE --enable-目标optspace --with-ABI = AAPCS --with-gcc的版本= 4.4.3 --with-binutils的版本= 2.19 --with-GMP版本= 4.2.4  - 与-MPFR版本= 2.4.1 --with-GDB版本= 7.1.x --with拱=的ARMv5TE --with-multilib的列表= mandroid --with-SYSROOT =的/ usr /本地/谷歌/家庭/安卓/ cupcake_rel_root --program变换名称='S&功放; ^&安培;臂eabi-和放大器;'
线程模型:单
GCC 4.4.3版本(GCC)
COLLECT_GCC_OPTIONS =' -  O''测试'' - 我的/ home / gnychis /文档/安卓/ OS /系统/核心/包括'' - 我的/ home / gnychis /文档/安卓/ OS /硬件/ libhardware /包括'' -I /家庭/ gnychis /文档/安卓/ OS /硬件/ RIL /包括'' - 我的/ home / gnychis /文档/安卓/ Android的NDK-R7B /平台/ Android的9 /弓臂/ usr / include目录''-I /家庭/ gnychis /文档/安卓/ OS /达尔维克/ libnativehelper /包括'' - 我的/ home / gnychis /文档/安卓/ OS /框架/基/包括'' - 我的/ home / gnychis /文件/安卓/ OS /外部/ Skia的/包括'' - 我的/ home / gnychis /文档/安卓/ OS /输出/目标/产品/通用/ OBJ /包括'' - 我的/ home / gnychis /文档/安卓/ OS /仿生/的libc /弓臂/包括'' - 我的/ home / gnychis /文档/安卓/ OS /仿生/ libc中/包括'' - 我的/ home / gnychis /文档/安卓/ OS /仿生/的libstdc ++ /包括''-I /家庭/ gnychis /文档/安卓/ OS /仿生/ libc中/核心/通用'' - 我的/ home / gnychis /文档/安卓/ OS /仿生/ libc中/内核/弓臂'-I /主页/ gnychis /文档/安卓/ OS /仿生/ libm中/包括'' - 我的/ home / gnychis /文档/安卓/ OS /仿生/ libm中/有/弓/ ARM'' - 我的/ home / gnychis /文件/安卓/ OS /仿生/ libthread_db所/包括'' - 我的/ home / gnychis /文档/安卓/ OS /仿生/的libm / ARM'' - 我的/ home / gnychis /文档/安卓/ OS /仿生/ 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浮动 -mthumb-互通'-fpic'-fno-例外'-ffunction截面'-funwind桌'-fstack保护器''-fmessage长度= 0''-Bdynamic'-L /家用/ gnychis /文档/安卓/ Android的NDK-R7B /平台/ Android的9 /弓臂/ usr / lib目录''-nostdlib'-v'-mfpu = VFP''-mabi = AAPCS
 /home/gnychis/Documents/android/os/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../libexec/gcc/arm-eabi/4.4.3/cc1 -quiet -v -I /家庭/ gnychis /文档/安卓/ OS /系统/核心/包括-I /家庭/ gnychis /文档/安卓/ OS /硬件/ libhardware /包括-I /家庭/ gnychis /文档/安卓/操作系统/硬件/ RIL /包括-I /家庭/ gnychis /文档/安卓/ Android的NDK-R7B /平台/ Android的9 /弓臂/ usr / include目录-I /家庭/ gnychis /文档/安卓/ OS / Dalvik的/ libnativehelper /包括-I /家庭/ gnychis /文档/安卓/ OS /框架/基/包括-I /家庭/ gnychis /文档/安卓/ OS /外部/ Skia的/包括-I /家庭/ gnychis /文件/安卓/ OS /输出/目标/产品/通用/ OBJ /包括-I /家庭/ gnychis /文档/安卓/ OS /仿生/的libc /弓臂/包括-I /家庭/ gnychis /文档/安卓/ OS /仿生/ libc中/包括-I /家庭/ gnychis /文档/安卓/ OS /仿生/的libstdc ++ /包括-I /家庭/ gnychis /文档/安卓/ OS /仿生/ libc中/核心/通用-I /家庭/ gnychis /文档/安卓/ OS /仿生/ libc中/内核/弓臂-I /家庭/ gnychis /文档/安卓/ OS /仿生/ libm中/包括-I /家庭/ gnychis /文档/安卓/ OS /仿生/ libm中/有/弓/ ARM -I /家庭/ gnychis /文档/安卓/ OS /仿生/ libthread_db所/包括-I /家庭/ gnychis /文档/安卓/ OS /仿生/的libm / ARM -I /家庭/ gnychis /文件/安卓/ OS /仿生/ libm中-I/home/gnychis/Documents/android/os/out/target/product/generic/obj/SHARED_LIBRARIES/libm_intermediates -i preFIX /home/gnychis/Documents/android/os/$p$pbuilt/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浮-mthumb-互通-mfpu = VFP -mabi = AAPCS -auxbase测试-version -fpic -fno-异常-ffunction截面-funwind桌-fstack-保护-fmessage长度= 0 -o /tmp/ccIIp1N2.s
GNU C(GCC)4.4.3版(ARM-EABI)
    由4.2.4 GNU C版(Ubuntu的4.2.4-1ubuntu4),GMP版本4.2.4,MPFR版本2.4.1编译。
GGC启发:--param GGC-分钟,展开= 98 --param GGC-最小堆大小= 128206
忽略不存在的目录"/home/gnychis/Documents/android/os/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/../../../../arm-eabi/include"
忽略不存在的目录的/ usr /本地/谷歌的/ home /安卓/ cupcake_rel_root的/ usr / local / include目录
忽略重复目录"/home/gnychis/Documents/android/os/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/../../lib/gcc/arm-eabi/4.4.3/include"
忽略重复目录"/home/gnychis/Documents/android/os/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/../../lib/gcc/arm-eabi/4.4.3/include-fixed"
忽略不存在的目录"/home/gnychis/Documents/android/os/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/../../lib/gcc/arm-eabi/4.4.3/../../../../arm-eabi/include"
忽略不存在的目录的/ usr /本地/谷歌的/ home /安卓/ cupcake_rel_root / usr / include目录
忽略不存在的目录/家/ gnychis /文档/安卓/ OS /输出/目标/产品/通用/ OBJ /包括
忽略不存在的目录/家/ gnychis /文档/安卓/ OS /仿生/ libm中/有/弓/ ARM
忽略不存在的目录"/home/gnychis/Documents/android/os/out/target/product/generic/obj/SHARED_LIBRARIES/libm_intermediates"
#包括...搜索从这里开始:
#包括< ...>搜索从这里开始:
 /主页/ gnychis /文档/安卓/ OS /系统/核心/包括
 /主页/ gnychis /文档/安卓/ OS /硬件/ libhardware /包括
 /主页/ gnychis /文档/安卓/ OS /硬件/ RIL /包括
 /主页/ gnychis /文档/安卓/ Android的NDK-R7B /平台/ Android的9 /弓臂/ usr / include目录
 /主页/ gnychis /文档/安卓/ OS /达尔维克/ libnativehelper /包括
 /主页/ gnychis /文档/安卓/ OS /框架/基/包括
 /主页/ gnychis /文档/安卓/ OS /外部/ Skia的/有
 /主页/ gnychis /文档/安卓/ OS /仿生/的libc /弓臂/包括
 /主页/ gnychis /文档/安卓/ OS /仿生/ libc中/有
 /主页/ gnychis /文档/安卓/ OS /仿生/的libstdc ++ /包括
 /主页/ gnychis /文档/安卓/ OS /仿生/ libc中/内核/共同
 /主页/ gnychis /文档/安卓/ OS /仿生/ libc中/内核/弓臂
 /主页/ gnychis /文档/安卓/ OS /仿生/ libm中/有
 /主页/ gnychis /文档/安卓/ OS /仿生/ libthread_db所/包括
 /主页/ gnychis /文档/安卓/ OS /仿生/的libm / ARM
 /主页/ gnychis /文档/安卓/ OS /仿生/ libm中
 /home/gnychis/Documents/android/os/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/include
 /home/gnychis/Documents/android/os/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/include-fixed
最终的搜索列表。
GNU C(GCC)4.4.3版(ARM-EABI)
    由4.2.4 GNU C版(Ubuntu的4.2.4-1ubuntu4),GMP版本4.2.4,MPFR版本2.4.1编译。
GGC启发:--param GGC-分钟,展开= 98 --param GGC-最小堆大小= 128206
编译器可执行文件校验:c575b4a30c8a516a84cf6e49f2cb23d1
COLLECT_GCC_OPTIONS =' -  O''测试'' - 我的/ home / gnychis /文档/安卓/ OS /系统/核心/包括'' - 我的/ home / gnychis /文档/安卓/ OS /硬件/ libhardware /包括'' -I /家庭/ gnychis /文档/安卓/ OS /硬件/ RIL /包括'' - 我的/ home / gnychis /文档/安卓/ Android的NDK-R7B /平台/ Android的9 /弓臂/ usr / include目录''-I /家庭/ gnychis /文档/安卓/ OS /达尔维克/ libnativehelper /包括'' - 我的/ home / gnychis /文档/安卓/ OS /框架/基/包括'' - 我的/ home / gnychis /文件/安卓/ OS /外部/ Skia的/包括'' - 我的/ home / gnychis /文档/安卓/ OS /输出/目标/产品/通用/ OBJ /包括'' - 我的/ home / gnychis /文档/安卓/ OS /仿生/的libc /弓臂/包括'' - 我的/ home / gnychis /文档/安卓/ OS /仿生/ libc中/包括'' - 我的/ home / gnychis /文档/安卓/ OS /仿生/的libstdc ++ /包括''-I /家庭/ gnychis /文档/安卓/ OS /仿生/ libc中/核心/通用'' - 我的/ home / gnychis /文档/安卓/ OS /仿生/ libc中/内核/弓臂'-I /主页/ gnychis /文档/安卓/ OS /仿生/ libm中/包括'' - 我的/ home / gnychis /文档/安卓/ OS /仿生/ libm中/有/弓/ ARM'' - 我的/ home / gnychis /文件/安卓/ OS /仿生/ libthread_db所/包括'' - 我的/ home / gnychis /文档/安卓/ OS /仿生/的libm / ARM'' - 我的/ home / gnychis /文档/安卓/ OS /仿生/ 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浮动 -mthumb-互通'-fpic'-fno-例外'-ffunction截面'-funwind桌'-fstack保护器''-fmessage长度= 0''-Bdynamic'-L /家用/ gnychis /文档/安卓/ Android的NDK-R7B /平台/ Android的9 /弓臂/ usr / lib目录''-nostdlib'-v'-mfpu = VFP''-mabi = AAPCS
 /home/gnychis/Documents/android/os/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/../../../../arm-eabi/bin/as -v -I /家庭/ gnychis /文档/安卓/ OS /系统/核心/包括-I /家庭/ gnychis /文档/安卓/ OS /硬件/ libhardware /包括-I /家庭/ gnychis /文档/安卓/ OS /硬件/ RIL /包括-I /家庭/ gnychis /文档/安卓/ Android的NDK-R7B /平台/ Android的9 /弓臂/ usr / include目录-I /家庭/ gnychis /文档/安卓/ OS / Dalvik的/ libnativehelper /包括-I /家庭/ gnychis /文档/安卓/ OS /框架/基/包括-I /家庭/ gnychis /文档/安卓/ OS /外部/ Skia的/包括-I /家庭/ gnychis /文档/安卓/ OS /输出/目标/产品/通用/ OBJ /包括-I /家庭/ gnychis /文档/安卓/ OS /仿生/的libc /弓臂/包括-I /家庭/ gnychis /文档/安卓/ OS /仿生/ libc中/包括-I /家庭/ gnychis /文档/安卓/ OS /仿生/的libstdc ++ /包括-I /家庭/ gnychis /文档/安卓/ OS /仿生/ libc中/核心/通用-I /家庭/ gnychis /文件/安卓/ OS /仿生/ libc中/内核/弓臂-I /家庭/ gnychis /文档/安卓/ OS /仿生/ libm中/包括-I /家庭/ gnychis /文档/安卓/ OS /仿生/ libm中/有/弓/ ARM -I /家庭/ gnychis /文档/安卓/ OS /仿生/ libthread_db所/包括-I /家庭/ gnychis /文档/安卓/ OS /仿生/的libm / ARM -I /家庭/ gnychis /文档/安卓/ OS /仿生/ libm中-I/home/gnychis/Documents/android/os/out/target/product/generic/obj/SHARED_LIBRARIES/libm_intermediates -march =的ARMv5TE -mthumb-互通-mfloat-ABI =软-mfpu = VFP -meabi = 5 -o /tmp/ccGAKjxX.o /tmp/ccIIp1N2.s
GNU汇编器版本2.19使用(ARM-EABI)BFD版本(GNU Binutils的)2.19
COMPILER_PATH=/home/gnychis/Documents/android/os/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../libexec/gcc/arm-eabi/4.4.3/:/home/gnychis/Documents/android/os/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../libexec/gcc/:/home/gnychis/Documents/android/os/$p$pbuilt/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/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/:/home/gnychis/Documents/android/os/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/:/home/gnychis/Documents/android/os/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/../../../../arm-eabi/lib/
COLLECT_GCC_OPTIONS =' -  O''测试'' - 我的/ home / gnychis /文档/安卓/ OS /系统/核心/包括'' - 我的/ home / gnychis /文档/安卓/ OS /硬件/ libhardware /包括'' -I /家庭/ gnychis /文档/安卓/ OS /硬件/ RIL /包括'' - 我的/ home / gnychis /文档/安卓/ Android的NDK-R7B /平台/ Android的9 /弓臂/ usr / include目录''-I /家庭/ gnychis /文档/安卓/ OS /达尔维克/ libnativehelper /包括'' - 我的/ home / gnychis /文档/安卓/ OS /框架/基/包括'' - 我的/ home / gnychis /文件/安卓/ OS /外部/ Skia的/包括'' - 我的/ home / gnychis /文档/安卓/ OS /输出/目标/产品/通用/ OBJ /包括'' - 我的/ home / gnychis /文档/安卓/ OS /仿生/的libc /弓臂/包括'' - 我的/ home / gnychis /文档/安卓/ OS /仿生/ libc中/包括'' - 我的/ home / gnychis /文档/安卓/ OS /仿生/的libstdc ++ /包括''-I /家庭/ gnychis /文档/安卓/ OS /仿生/ libc中/核心/通用'' - 我的/ home / gnychis /文档/安卓/ OS /仿生/ libc中/内核/弓臂'-I /主页/ gnychis /文档/安卓/ OS /仿生/ libm中/包括'' - 我的/ home / gnychis /文档/安卓/ OS /仿生/ libm中/有/弓/ ARM'' - 我的/ home / gnychis /文件/安卓/ OS /仿生/ libthread_db所/包括'' - 我的/ home / gnychis /文档/安卓/ OS /仿生/的libm / ARM'' - 我的/ home / gnychis /文档/安卓/ OS /仿生/ 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浮动 -mthumb-互通'-fpic'-fno-例外'-ffunction截面'-funwind桌'-fstack保护器''-fmessage长度= 0''-Bdynamic'-L /家用/ gnychis /文档/安卓/ Android的NDK-R7B /平台/ Android的9 /弓臂/ usr / lib目录''-nostdlib'-v'-mfpu = VFP''-mabi = AAPCS
 /home/gnychis/Documents/android/os/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../libexec/gcc/arm-eabi/4.4.3/collect2 --sysroot =的/ usr /本地/谷歌的/ home /安卓/ cupcake_rel_root -X -o测试-L /家庭/ gnychis /文档/安卓/ Android的NDK-R7B /平台/ Android的9 /弓臂的/ usr / LIB -L/home/gnychis/Documents/android/os/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3 -L /家庭/ gnychis /文档/安卓/ OS / prebuilt / Linux的-86 /工具链/ ARM-EABI-4.4.3 / bin中/../ lib中/ GCC -L/home/gnychis/Documents/android/os/$p$pbuilt/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/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/arm-eabi/lib/ldscripts/armelf.x -dynamic-连接器/系统/斌/连接器--gc截面-z nocopyreloc --no-不确定-rpath链接= /家庭/ gnychis /文档/安卓/ Android的NDK-R7B /平台/ Android的9 /拱门-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/$p$pbuilt/linux-x86/tool​​chain/arm-eabi-4.4.3/lib32/libiberty.a /home/gnychis/Documents/android/os/$p$pbuilt/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/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/../../../../arm-eabi/bin/ld:警告:/tmp/ccGAKjxX.o使用可变大小枚举但输出是用32位的枚举;跨对象使用枚举值可能会失败
/tmp/ccGAKjxX.o:(.ARM.exidx.text.main+0x0):未定义的参考`__aeabi_unwind_cpp_pr0
collect2:劳工处返回1退出状态
 

所以,我只是有点不确定为什么我收到这个不确定的参考。我已经使用这个相同的交叉编译的方法略有不同版本的Andr​​oid,也没有问题。

做任何事情站出来的人?

编辑:实际产生的命令如下:

  

ARM-EABI-gcc的-o测试-I /家庭/ gnychis /文档/安卓/ OS /系统/核心/包括-I /家庭/ gnychis /文档/安卓/ OS /硬件/ libhardware /包括-I /家用/ gnychis /文档/安卓/ OS /硬件/ RIL /包括-I /家庭/ gnychis /文档/安卓/ OS /达尔维克/ libnativehelper /包括-I /家庭/ gnychis /文档/安卓/ OS /框架/基/包括-I /家庭/ gnychis /文档/安卓/ OS /外部/ Skia的/包括-I /家庭/ gnychis /文档/安卓/ OS /输出/目标/产品/通用/ OBJ /包括-I /家庭/ gnychis /文件/安卓/ OS /仿生/的libc /弓臂/包括-I /家庭/ gnychis /文件/安卓/ OS /仿生/ libc中/包括-I /家庭/ gnychis /文件/安卓/ OS /仿生/的libstdc ++ /包括-I /家庭/ gnychis /文档/安卓/ OS /仿生/ libc中/核心/通用-I /家庭/ gnychis /文档/安卓/ OS /仿生/ libc中/内核/弓臂-I /家庭/ gnychis /文件/安卓/ OS /仿生/ libm中/包括-I /家庭/ gnychis /文件/安卓/ OS /仿生/ libm中/有/弓/ ARM -I /家庭/ gnychis /文件/安卓/ OS /仿生/ libthread_db所/包括-I /家庭/ gnychis /文档/安卓/ OS /仿生/的libm / ARM -I /家庭/ gnychis /文档/安卓/ OS /仿生/ 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/gnychis/Documents/android/os/system/core/include/arch/linux-arm/AndroidConfig.h -UDEBUG -march =的ARMv5TE -mtune =的XScale -msoft浮-mthumb-互通-fpic -fno-异常-ffunction截面-funwind桌-fstack-保护-fmessage长度= 0 -Bdynamic轮候册,-T,/家庭/ gnychis /文档/安卓/os/build/core/armelf.x -Wl,-dynamic链接器,/系统/斌/连接器轮候册, - GC-部分-Wl,-z,nocopyreloc轮候册, - 没有不确定-Wl,-rpath-link=/home/gnychis/Documents/android/os/../android-ndk-r7b/platforms/android-9/arch-arm/usr/lib -L /家庭/ gnychis /文档/安卓/ OS /../的Andr​​oid NDK-R7B /平台/ Android的9 /弓臂/ 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/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/lib/gcc/arm-eabi/4.4.3/libgcc.a -lc -lm test.c以

解决方案

这是你的链接一样,爆发成多行的净度:

/home/gnychis/Documents/android/os/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../libexec/gcc/arm-eabi/4.4.3/collect2 \   --sysroot =的/ usr /本地/谷歌的/ home /安卓/ cupcake_rel_root \   -X \   -o测试\   -L /家庭/ gnychis /文档/安卓/ Android的NDK-R7B /平台/ Android的9 /弓臂/ usr / lib目录\   -L/home/gnychis/Documents/android/os/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3 \   -L /家庭/ gnychis /文档/安卓/ OS / prebuilt / Linux的-86 /工具链/ ARM-EABI-4.4.3 / bin中/../ lib中/ GCC   -L/home/gnychis/Documents/android/os/$p$pbuilt/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/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/arm-eabi/lib/ldscripts/armelf.x \   -dynamic-连接器/系统/斌/连接器\   --gc截面\   -z nocopyreloc \   --no-未定义\   -rpath链接= /家庭/ gnychis /文档/安卓/ Android的NDK-R7B /平台/ Android的9 /弓臂/ 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/$p$pbuilt/linux-x86/tool​​chain/arm-eabi-4.4.3/lib32/libiberty.a \   /home/gnychis/Documents/android/os/$p$pbuilt/linux-x86/toolchain/arm-eabi-4.4.3/lib/gcc/arm-eabi/4.4.3/libgcc.a \   -lc \   -lm \   /tmp/ccGAKjxX.o

正如你所看到的,你自己的目标文件(暂时的)是在命令行中的最后一项。这是错误的。它需要的库之前,至少,如果是正确链接。

基本上,你的海湾合作委员会脚本传递 -nostdlib (它说,你知道更好),然后传递库手动,但这样做的完全错误的顺序。如果解决这个问题,都应该很好。

连接顺序是非常重要的。对象和的库提供的符号必须在对象和库的需要的符号后的联系。

有那可以容忍坏订购工具某些版本,但我认为这是一个错误,或错误的功能,因为较新的工具链不能,也不应该。 presumably这个剧本是为其中之一写的。

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

int main() {
  ;
  return 0;
}

I was able to do so using an "agcc" script on an older version of Android that can be found here. I'm sincerely not trying to use an Android.mk file to build this. I know I can, but this is part of something much larger I'm working on. So take it for face-value that I am trying to cross-compile this in a different way.

Anyway, I try 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 reference to __aeabi_unwind_cpp_pr0.

After doing some digging, this symbol is in libgcc.a which I am linking to:

$ 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' which tells me that it is in the code somewhere, right?

Here is the verbose output of arm-eabi-gcc which shows I am in fact linking 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 just a bit unsure why I am getting this undefined reference. I have used this same method of cross-compiling with a slightly different version of Android and had no issue.

Does anything stand out to anyone?

EDIT: The actual command generated is the following:

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/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 -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 -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/platforms/android-9/arch-arm/usr/lib -L/home/gnychis/Documents/android/os/../android-ndk-r7b/platforms/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

解决方案

Here's your link like, broken out into multiple 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 (the temporary one) is the very last item on the command line. This is just wrong. It needs to be before the libraries, at least, if it is to link correctly.

Basically, your agcc script is passing -nostdlib (which says that you know better) and then passing the libraries manually, but doing it in completely the wrong order. If you fix this, all should be well.

Link order is very important. Objects and libraries that provide symbols must be linked after objects and libraries that require symbols.

There were certain versions of the tools that could tolerate bad ordering, but I think that was a bug, or mis-feature, because newer toolchains cannot, and should not. Presumably this script was written for one of those.

 
精彩推荐
图片推荐