C++ library를 안드로이드에서 돌리기 위한 삽질

요즘 C/C++ 로 된 OpenCV 라이브러리를 안드로이드 플랫폼 안에 포팅해서 자바 라이브러리로 만드는 과정 중인데.. 순수 C App는 안드로이드 내부의 라이브러리로 빌드/실행이 가능한데 C++ 쪽은 문제를 겪고 있다.

내가 생각한 해결 방법은 그냥 GNU C++ library를 통째로 안드로이드 안으로 이식하려고 생각한 것이었다.

그러나 나같은 삽질을 한 사람이 또 있겠지 싶은 마음에..

여기저기 뒤져보던 중 구글의 Andorid Interanls 그룹에서 여러가지 포스팅 들을 찾을 수 있었는데,

글 들 중 가장 최신의 글은 삽질하지 말고 기다려라. 라는 것이다-_-

좌절이다.. OTL…

그러나 그 이전인 2월의 글 들 중 C++ Application 을 포팅하는데 성공했다는 사람(Susmith M R)이 있다.

이 포스팅(Dynamic Shared Library in Android Another Approach – Don’t Use android Linker)에서 찾을 수 있는데, 안드로이드 내부의 링커(/system/lib/linker)를 사용하지 말라는 이야기이다.

gcc의 옵션으로 -dynamic-linker=/system/lib/linker 대신,

링커 파일(ld-linux-so.6)을 넣고 –dynamic-linker=/system/lib/ld-linux-so.6 옵션으로 컴파일 한다는 건데.

링커 자체가 바뀐다면 추측상으론 DATA 섹션에서 RO 영역과 RW 영역 구분을 없앴던 부분도 수행하지 않고(바꿔 말하면 armelf_linux_eabi.xsc 를 사용하지 않고) 사용할 수 있을 듯도 하다. 음.. 잉? 아닌가? 음.. 생각해봐야겠다..

한번 해봐야겠다.

참고 :

Problem loading C++ library in android


Need little help for JNI


Dynamic Shared Library in Android Another Approach – Don’t Use android Linker

2 thoughts to “C++ library를 안드로이드에서 돌리기 위한 삽질”

  1. 유용한 정보 감사합니다!

    그런데 dasomoli가 아니라 dasomdoli 아닌가요? ㅎㅎ; 지금 쓰신건 다솜올리인데 ㅇ.ㅇa

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다