- are you sure both executables and libraries are generated?? make
sure first of all libhello.so is generated, and is present in
/system/lib folder..
  Not sure if u use single make file, but both shared library and
executable should have their Android.mk files and it should be easy to
write one from GNU makefile.

- what tool chain you use?? android has its own version of glibc, and
if you build from regular linux build toolchains, libc mismatch will
occur, while loading/running the executable.
  try using android toolchain compiler (CROSS_COMPILE=<mydroid
directory>/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- )

On Mon, Mar 15, 2010 at 3:12 PM, 원용준 <uhanr...@gmail.com> wrote:
> 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: android-porting+unsubscr...@googlegroups.com
> website: http://groups.google.com/group/android-porting
>

-- 
unsubscribe: android-porting+unsubscr...@googlegroups.com
website: http://groups.google.com/group/android-porting

Reply via email to