* common
+ '-rdynamic' is not supported. android dynamic linker allows 'undefined symbol' only for weak symbol.(See (*1)) + 'tmpfile()' function always returns NULL. "No such file or directory!" + 'strtod()' doesn't support '0xXXXX' format.
* NDK 8
'regex.h' exists in 'include'. But function bodies are not in library.
* NDK 9
'pthread_rwlock_xxxx' is declared in 'pthread.h'. But body is missing in library. 'pthread_exit' is declared without 'noreturn' attribute. 'regex' functions doesn't work as it should be. (bug? or not-implemented yet?? I have no idea.)
to be continued...
===== Details =====
(*1) : '-rdynamic' and 'weak' symbol (Updated at 2011-Aug-29)
Here is sample code to for testing 'weak' symbol at Android.
[ main.c ]
#include <dlfcn.h>
#include <stdio.h>
int g_d;
void
main() {
void* handle;
void (*prf)(void);
g_d = 369;
handle = dlopen("/data/libgtst.so", RTLD_LAZY);
if (!handle) {
printf("Fail to load library\n");
return;
}
prf = dlsym(handle, "print_g");
if (NULL != dlerror()) {
printf("Fail to get symbol print_g\n");
return;
}
(*prf)();
printf("=== DONE! ===\n");
}
[ lib.c ]
#include <stdio.h>
extern int g_d __attribute__((weak));
void
print_g(void) {
printf("==> %d\n", g_d);
}
[ Android.mk ]
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libgtst
LOCAL_SRC_FILES := lib.c
LOCAL_CFLAGS :=
LOCAL_C_INCLUDES += $(NDK_PROJECT_PATH)
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := test
LOCAL_SRC_FILES := main.c
LOCAL_CFLAGS :=
LOCAL_LDFLAGS :=
LOCAL_C_INCLUDES += $(NDK_PROJECT_PATH)
include $(BUILD_EXECUTABLE)
----- Test Steps -----
* build above codes at Android NDK
adb push libgtst.so /data/libgtst.so
adb push test /data/test
adb shell /data/test
==> 369
=== DONE! ===to be continued...
'Domain > Android' 카테고리의 다른 글
| [Android] Handling kernel device uevent in userspace. (0) | 2011.04.20 |
|---|---|
| [Android][GNU] establishing gnu system root on android devices (0) | 2011.03.18 |
| [Android] Classify unexpected cases (0) | 2010.10.29 |
| [Android] Eclipse: Android requires .class compatibility set ...to 5.0 (0) | 2010.06.15 |
| [Android-Eclair] Miscellaneous tips. (0) | 2010.04.09 |