라이브러리와 애플리케이션 간에 변수 참조 하는 부분에서, 기존 리눅스와 다른 에러가 발생해서 도움을 요청합니다.
main_var 는 애플리케이션의 main.c 에 글로벌 변수로 정의 되어 있으며, 
shared 라이브러리에서 extern 로 참조 합니다.
기존 리눅스 환경에서는 이와 같은 구조의 사용이 문제가 되지 않았는데, 
컴파일 시에 안드로이드에서는 undefined reference to `main_var' 에러가 발생합니다.

제가 테스트 한 코드를 보여 드리겠습니다.

//---------------------------------------
// library
//---------------------------------------
1) libtest.h 

#ifndef _LIBTEST_
#define _LIBTEST_
extern int main_var;    // 라이브러리 내에서 extern 로 참조되는 변수 선언
void func1();
#endif // _LIBTEST_

2) libtest.c

#include "libtest.h"
#include <stdio.h>

void func1()
{
main_var = 2;      // 값의 설정
printf("func1 main_var=%d\n", main_var);
}

//---------------------------------------
// application
//---------------------------------------

3) main.c

#include "libtest.h"
#include <stdio.h>

int main_var = 0;  // 실제로 여기서 글로벌 변수로 선언되었지요.
int main(int argc, char** argv)
{
main_var = 1;
printf("main main_var=%d\n", main_var);
func1();
printf("main main_var=%d\n", main_var);
return 0;
}

//---------------------------------------
// Android.mk
//---------------------------------------
LOCAL_PATH:= $(call my-dir)

# libtest
# ========================================================

include $(CLEAR_VARS)

LOCAL_SRC_FILES := \
libtest.c

LOCAL_MODULE:= libtest

LOCAL_C_INCLUDES :=  \
$(LOCAL_PATH)


LOCAL_CFLAGS := \

LOCAL_SHARED_LIBRARIES := 

LOCAL_PRELINK_MODULE:=false

include $(BUILD_SHARED_LIBRARY)

# testlib
# ========================================================

include $(CLEAR_VARS)

LOCAL_SRC_FILES:= main.c

LOCAL_C_INCLUDES :=  \
$(LOCAL_PATH)

LOCAL_SHARED_LIBRARIES := libtest

LOCAL_MODULE:= testlib

include $(BUILD_EXECUTABLE)

컴파일 시 undefined reference to `main_var' 에러가 발생합니다.
리눅스에서는 컴파일 잘 되면, 또한 제대로 동작 합니다.

out/target/product/generic/obj/SHARED_LIBRARIES/libtest_intermediates/libtest.o: In function `func1':
..external/cmx/lib_test/libtest.c:8: undefined reference to `main_var'

Android.mk 파일에 다음과 같이 설정하면 컴파일은 되지만, 실행시 링크 에러가 발생하네요.
LOCAL_ALLOW_UNDEFINED_SYMBOLS := true 

open 소스를 포팅해야 하는데, 메인 프로그램과 모듈(so파일)의 관계가 모두 이런 구조로 동작하게 되어 있네요.
메인 프로그램에서 글로벌 변수를 가지고 있고, 모듈이 로딩되어 동작 하면서 변수를 참조하도록..--; 

안드로이드에서는 이런 구조가 지원되지 않는지? 링커의 능력인것 같은데..