| Summary: | android_ndk_defconfig fails to compile with Android NDK r10e | ||
|---|---|---|---|
| Product: | Busybox | Reporter: | nathan.renniewaldock |
| Component: | Other | Assignee: | unassigned |
| Status: | RESOLVED FIXED | ||
| Severity: | minor | CC: | busybox-cvs |
| Priority: | P5 | ||
| Version: | unspecified | ||
| Target Milestone: | --- | ||
| Hardware: | Other | ||
| OS: | Other | ||
| Host: | Target: | ||
| Build: | |||
| Attachments: |
Updated android_ndk_defconfig
Patch for udhcpc |
||
Created attachment 6171 [details]
Patch for udhcpc
Just found one last issue. -fpie -pie needs adding to CFLAGS as Android's linker now rejects nonPIE code. The resulting binary has been tested on Android 5.0.1 and is functional. Applied to git, thanks |
Created attachment 6166 [details] Updated android_ndk_defconfig busybox now fails to compile with the Android NDK using the provided config (mostly due to changes in busybox's default options). ~/android/apps/busybox/busybox-git$ git log -1 --oneline 8752973 modprobe: handle module arguments containing spaces ~/android/apps/busybox/busybox-git$ export PATH=/opt/android-ndk/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/:$PATH ~/android/apps/busybox/busybox-git$ make android_ndk_defconfig ~/android/apps/busybox/busybox-git$ make -j1 CC coreutils/touch.o coreutils/touch.c: In function 'touch_main': coreutils/touch.c:171:21: error: 'lutimes' undeclared (first use in this function) (opts & OPT_h) ? lutimes : ^ coreutils/touch.c:171:21: note: each undeclared identifier is reported only once for each function it appears in make[1]: *** [coreutils/touch.o] Error 1 make: *** [coreutils] Error 2 FEATURE_TOUCH_NODEREF=n fixes that one. Next failure: CC networking/udhcp/dhcpc.o In file included from /opt/android-ndk/platforms/android-19/arch-arm/usr/include/sys/socket.h:33:0, from /opt/android-ndk/platforms/android-19/arch-arm/usr/include/netdb.h:66, from include/libbb.h:20, from networking/udhcp/common.h:11, from networking/udhcp/dhcpc.c:24: networking/udhcp/dhcpc.c: In function 'udhcp_recv_raw_packet': networking/udhcp/dhcpc.c:848:40: error: invalid application of 'sizeof' to incomplete type 'struct tpacket_auxdata' unsigned char cmsgbuf[CMSG_LEN(sizeof(struct tpacket_auxdata))]; ^ networking/udhcp/dhcpc.c:911:26: error: 'PACKET_AUXDATA' undeclared (first use in this function) && cmsg->cmsg_type == PACKET_AUXDATA ^ networking/udhcp/dhcpc.c:911:26: note: each undeclared identifier is reported only once for each function it appears in networking/udhcp/dhcpc.c:918:11: error: dereferencing pointer to incomplete type if (aux->tp_status & TP_STATUS_CSUMNOTREADY) ^ networking/udhcp/dhcpc.c:848:16: warning: unused variable 'cmsgbuf' [-Wunused-variable] unsigned char cmsgbuf[CMSG_LEN(sizeof(struct tpacket_auxdata))]; ^ networking/udhcp/dhcpc.c: In function 'udhcp_raw_socket': networking/udhcp/dhcpc.c:1046:35: error: 'PACKET_AUXDATA' undeclared (first use in this function) if (setsockopt_1(fd, SOL_PACKET, PACKET_AUXDATA) != 0) { ^ make[1]: *** [networking/udhcp/dhcpc.o] Error 1 make: *** [networking/udhcp] Error 2 Adding the patch from #6362 to networking/udhcp/dhcpc.h fixes that. And finally fails on linking: LINK busybox_unstripped Trying libraries: c dl gcc m Failed: -Wl,--start-group -lc -ldl -lgcc -lm -Wl,--end-group Output of: arm-linux-androideabi-gcc -Wall -Wshadow -Wwrite-strings -Wundef -Wstrict-prototypes -Wunused -Wunused-parameter -Wunused-function -Wunused-value -Wmissing-prototypes -Wmissing-declarations -Wno-format-security -Wdeclaration-after-statement -Wold-style-definition -fno-builtin-strlen -finline-limit=0 -fomit-frame-pointer -ffunction-sections -fdata-sections -fno-guess-branch-probability -funsigned-char -static-libgcc -falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1 -fno-unwind-tables -fno-asynchronous-unwind-tables -Os -DANDROID -D__ANDROID__ -DSK_RELEASE -nostdlib -march=armv7-a -msoft-float -mfloat-abi=softfp -mfpu=neon -mthumb -mthumb-interwork -fpic -fno-short-enums -fgcse-after-reload -frename-registers --sysroot=/opt/android-ndk/platforms/android-9/arch-arm -Xlinker -z -Xlinker muldefs -nostdlib -Bdynamic -Xlinker -dynamic-linker -Xlinker /system/bin/linker -Xlinker -z -Xlinker nocopyreloc -Xlinker --no-undefined /opt/android-ndk/platforms/android-9/arch-arm/usr/lib/crtbegin_dynamic.o /opt/android-ndk/platforms/android-9/arch-arm/usr/lib/crtend_android.o -o busybox_unstripped -Wl,--start-group applets/built-in.o archival/lib.a archival/libarchive/lib.a console-tools/lib.a coreutils/lib.a coreutils/libcoreutils/lib.a debianutils/lib.a e2fsprogs/lib.a editors/lib.a findutils/lib.a init/lib.a libbb/lib.a libpwdgrp/lib.a loginutils/lib.a mailutils/lib.a miscutils/lib.a modutils/lib.a networking/lib.a networking/libiproute/lib.a networking/udhcp/lib.a printutils/lib.a procps/lib.a runit/lib.a selinux/lib.a shell/lib.a sysklogd/lib.a util-linux/lib.a util-linux/volume_id/lib.a archival/built-in.o archival/libarchive/built-in.o console-tools/built-in.o coreutils/built-in.o coreutils/libcoreutils/built-in.o debianutils/built-in.o e2fsprogs/built-in.o editors/built-in.o findutils/built-in.o init/built-in.o libbb/built-in.o libpwdgrp/built-in.o loginutils/built-in.o mailutils/built-in.o miscutils/built-in.o modutils/built-in.o networking/built-in.o networking/libiproute/built-in.o networking/udhcp/built-in.o printutils/built-in.o procps/built-in.o runit/built-in.o selinux/built-in.o shell/built-in.o sysklogd/built-in.o util-linux/built-in.o util-linux/volume_id/built-in.o -Wl,--end-group -Wl,--start-group -lc -ldl -lgcc -lm -Wl,--end-group ========== util-linux/lib.a(mdev.o):mdev.c:function mdev_main: error: undefined reference to 'sigtimedwait' coreutils/lib.a(sync.o):sync.c:function sync_main: error: undefined reference to 'syncfs' libbb/lib.a(pw_encrypt.o):pw_encrypt.c:function pw_encrypt: error: undefined reference to 'crypt' collect2: error: ld returned 1 exit status make: *** [busybox_unstripped] Error 1 MDEV=n, FEATURE_SYNC_FANCY=n, USE_BB_CRYPT=y Fixes these errors. Then it dies with "ld: internal error in do_print_to_mapfile, at /s/ndk-toolchain/src/build/../binutils/binutils-2.25/gold/output.h:395" due to Google changing it to use gold linker by default. Fixed by appending -fuse-ld=bfd to CFLAGS Updated android_ndk_defconfig and patch for udhcpc attached.