안드로이드 개발 질문/답변
(글 수 45,052)
개발 초보자가 문의드립니다.
NDK를 이용하여 라이브러리 A.so와 B.so파일을 만들었습니다.
B.so파일을 system/lib에 위치시켰으며 system/lib에 있는 C.so파일에서 B.so파일을 링크하고 있습니다.
이와 동시에 A.so파일에서도 B.so파일을 같이 링크하고 있고요.
이때 A.so파일에서 B.so파일의 전역변수를 변경하면 그 값이 C.so파일에서도 똑같이 B.so파일의 전역변수가
변경된 것을 알수 있도록 하고 싶습니다.
A.so파일과 C.so파일에서 동시에 하나의 B.so파일을 링커하도록 메모리 매핑을 하고 싶은데...
어떻게해야 하는지 방법을 몰라서요.
메모리 매핑을 해 본적이 없어 문의 드립니다.
조언 및 예제사이트 소개 부탁드리겠습니다.
NDK를 이용하여 라이브러리 A.so와 B.so파일을 만들었습니다.
B.so파일을 system/lib에 위치시켰으며 system/lib에 있는 C.so파일에서 B.so파일을 링크하고 있습니다.
이와 동시에 A.so파일에서도 B.so파일을 같이 링크하고 있고요.
이때 A.so파일에서 B.so파일의 전역변수를 변경하면 그 값이 C.so파일에서도 똑같이 B.so파일의 전역변수가
변경된 것을 알수 있도록 하고 싶습니다.
A.so파일과 C.so파일에서 동시에 하나의 B.so파일을 링커하도록 메모리 매핑을 하고 싶은데...
어떻게해야 하는지 방법을 몰라서요.
메모리 매핑을 해 본적이 없어 문의 드립니다.
조언 및 예제사이트 소개 부탁드리겠습니다.
2010.04.29 14:20:17
혹시나 만드신 A.so를 어떻게 /system/lib로 넣으셨나요? 저도 만드는 .so파일을 /system/lib쪽에 넣어줘야하는데..
read file system이라.. 권한을 바꿔줘도 memory error라고 나오는데요. 파일이 용량이 90kb정도 밖에 안되는데
들어가지질않네요. jni에서 만드는 A.so라는걸로 B.so를 호출하는건데 B.so가 /system/lib에 없어서 dlopen으로 불러올수가없거든요.
방법 좀 문의드려봅니다.
2010.05.02 22:54:11
전 안드로이드 전체 소스를 우분투에서 빌드해서 system이미지를 만들었습니다. 만들은 이미지를 애뮬레이터의 플랫폼 폴더에 있는 이미지와 교체하시면 바뀐 이미지를 넣을 수 있어요.
아니면.. www.kandroid.org에서 NDK를 검색하시면 system 쪽에 라이브러리를 올릴수 있는 이미지가 올라와 있습니다.




자답이네요.. mmap라는 함수를 써서 데이터를 공유하면 된다는 것까지는 알았습니다.
그런데 문제가 제가 매핑한 적이 없어서 mmap라는 함수를 쓸줄 모른다는 거죠.
혹시 mmap함수를 이용하여 라이브러리를 공유하는 좋은 예가 없을까요?