Hello When I built a C language Application with bionic and prebuilt using tollchaing, some problems happened.
I am not using "Antroid.mk" style. I am just using exist "Makefile" Environment values and "Autoconf" for the application. Let us suppose the application which I am trying to build is "hellWorld". If I build "helloWorld", there would be libHello.so and HelloWorld binalry files. Then I will use those files. I refered to the web site but it failed. (http://honeypod.blogspot.com/2007/12/shared-library-hello-world-for-android.html) I think that build is success. But when I executed the application, follwing error messages showed. [ERROR MESSAGE] ========================================================================== # ./helloWorld link_image[1838]: 976 could not load needed library 'libHello.so' for './helloWorld' (reloc_library[1245]: 976 cannot locate 'strcpy'...)CANNOT LINK EXECUTABLE # strace ./helloWorld execve("./helloWorld", ["./helloWorld"], [/* 12 vars */]) = 0 syscall_983045(0xb001792c, 0xbeec4d44, 0, 0x84a8, 0xb000f448, 0xbeec4d40, 0x8, 0xf0005, 0, 0, 0, 0, 0, 0xbeec4ce8, 0xb000194b, 0xb000229c, 0x80000010, 0xb001792c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) = 0 getpid() = 978 sigaction(SIGILL, {0xb0001d4d, [], SA_RESTART}, {SIG_DFL}, 0) = 0 sigaction(SIGABRT, {0xb0001d4d, [], SA_RESTART}, {SIG_DFL}, 0) = 0 sigaction(SIGBUS, {0xb0001d4d, [], SA_RESTART}, {SIG_DFL}, 0) = 0 sigaction(SIGFPE, {0xb0001d4d, [], SA_RESTART}, {SIG_DFL}, 0) = 0 sigaction(SIGSEGV, {0xb0001d4d, [], SA_RESTART}, {SIG_DFL}, 0) = 0 sigaction(SIGSTKFLT, {0xb0001d4d, [], SA_RESTART}, {SIG_DFL}, 0) = 0 sigaction(SIGPIPE, {0xb0001d4d, [], SA_RESTART}, {SIG_DFL}, 0) = 0 stat64("/system/lib/libcrypto.so", {st_mode=S_IFREG|0644, st_size=617972, ...}) = 0 ....... 중략 ........ stat64("/system/lib/libHello.so", {st_mode=S_IFREG|0755, st_size=602586, ...}) = 0 open("/system/lib/libHello.so", O_RDONLY|O_LARGEFILE) = 3 lseek(3, 0, SEEK_SET) = 0 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0▒W\0\000"..., 4096) = 4096 lseek(3, -8, SEEK_END) = 602578 read(3, "ockname\0", 8) = 8 mmap2(0x80100000, 135168, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x80100000 mmap2(0x80100000, 114324, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x80100000 mprotect(0x80100000, 114688, PROT_READ|PROT_WRITE|PROT_EXEC) = 0 mmap2(0x8011c000, 5636, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x1b) = 0x8011c000 mmap2(0x8011e000, 11524, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x8011e000 close(3) = 0 munmap(0x80100000, 135168) = 0 write(2, "link_image[1838]: 978 could no"..., 147 link_image[1838]: 978 could not load needed library 'libHello.so' for './helloWorld' (reloc_library[1245]: 978 cannot locate 'strcpy'...)) = 147 write(2, "CANNOT LINK EXECUTABLE\n\0", 24CANNOT LINK EXECUTABLE ) = 24 SYS_248(0xffffffff, 0x38, 0x1000, 0x1, 0xffffffff <unfinished ... exit status 255> # ========================================================================== I guess it is a linker error. Do I make a mistake with compile flag? Compile flags what I used are here. It include basic Android CFLAGS and BUILD_SHARED_LIBRARRY to make shared library and BUILD_EXECUTABLE to make binary. [FLAGS] ========================================================================== ###################################################################################### # LOCAL_CFLAGS ###################################################################################### LOCAL_CFLAGS:= $(subst system,$(ANDROID_HOME)/system,$(TARGET_GLOBAL_CFLAGS)) LOCAL_CFLAGS+= -I$(ANDROID_HOME)/bionic/libc/include LOCAL_CFLAGS+= -I$(ANDROID_HOME)/bionic/libc/kernel/common LOCAL_CFLAGS+= -I$(ANDROID_HOME)/bionic/libc/kernel/arch-$(TARGET_ARCH) LOCAL_CFLAGS+= -I$(ANDROID_HOME)/bionic/libc/arch-$(TARGET_ARCH)/include LOCAL_CFLAGS+= -I$(ANDROID_HOME)/bionic/libm/include LOCAL_CFLAGS+= -I$(ANDROID_HOME)/bionic/libm/include/$(TARGET_ARCH) LOCAL_CFLAGS+= -I$(ANDROID_HOME)/kernel/include LOCAL_CFLAGS+= -I$(ANDROID_HOME)/bionic/libstdc++/include LOCAL_CFLAGS+= -I$(ANDROID_HOME)/external/libvos/svn/include LOCAL_CFLAGS+= -I$(ANDROID_HOME)/external/sqlite/dist LOCAL_CFLAGS+= -I$(ANDROID_HOME)/external/openssl/include LOCAL_CFLAGS+= -nostdlib LOCAL_CFLAGS+= -Wl,-rpath-link=$(OUT)/system/lib/ ###################################################################################### # LOCAL_LDFLAGS ###################################################################################### LOCAL_LDFLAGS:= $(subst system,$(ANDROID_HOME)/system,$(TARGET_GLOBAL_LDFLAGS)) LOCAL_LDFLAGS+= $(ANDROID_HOME)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/lib/gcc/arm-eabi/4.4.0/libgcc.a LOCAL_LDFLAGS+= -L$(OUT)/system/lib LOCAL_LDFLAGS+= -lc -lm -lstdc++ -lsqlite -lcrypto ###################################################################################### # BUILD_SHARED_LIBRARRY ###################################################################################### SHARED_LDFLAGS:= -Wl,-T,$(ANDROID_HOME)/build/core/armelf.xsc SHARED_LDFLAGS+= -Wl,-shared,-Bsymbolic ###################################################################################### # BUILD_EXECUTABLE ###################################################################################### EXECUTE_CFLAGS:= -Bdynamic EXECUTE_CFLAGS+= -Wl,-T,${ANDROID_HOME}/build/core/armelf.x EXECUTE_CFLAGS+= -Wl,-dynamic-linker,/system/bin/linker EXECUTE_CFLAGS+= -Wl,--gc-sections -Wl,-z,nocopyreloc EXECUTE_LDFLAGS:= $(OUT)/obj/lib/crtbegin_dynamic.o EXECUTE_LDFLAGS+= $(OUT)/obj/lib/crtend_android.o EXECUTE_LDFLAGS:= -lHello ========================================================================== Thank you. -- unsubscribe: [email protected] website: http://groups.google.com/group/android-porting
