안녕하세요. 안드로이드 NDK를 이용하여 C단에서 문자열을 UTF-8로 인코딩/디코딩하려고 하는데요.
구글링 네이버링 다뒤져 봐도... 대부분 두가지로 사용하라고 나오더라구요.
1. icu 패키지를 시그윈에서 설치후 이용해라
2. iconv 패키지를 다운로드해서 iconv 빌드를 스태틱으로 하여 android.mk에 넣고 사용하라~
1번 같은 경우는 패키지를 설치후 /usr/include에 보면 "ucnv.h" 이 생기더군요.
문제는 이 헤더의 정의가 구현된 라이브러리 (.a 나 .so)가 있어야 하는데,
관련된 이름이 없더군요. 도대체 ucnv.h 를 사용하려면 어떤 라이브러리를 사용해야하는건지 잘 모르겠습니다.
구글 링을 해도 안나와서요?
2번 같은 경우는 설치 후 에 android.mk를 인터넷에 나오는 빌드환경으로 비슷하게 빌드를 해보았지만,
에러만 많이 나오더라구요. 안드로이드 환경에서 사용하려면 예전에 curl 라이브러리 처럼 안드로이드로 빌드를 해서
나오는 결과물의 헤더파일과 라이브러리를 사용하는것이 맞는지 궁금합니다. 안드로이드 용으로 iconv 빌드를 하려고
구글 링으로 찾아 봐도 arm 계열 빌드 관련 옵션은 없더군요.
아진짜... MFC나 자바 사용하다가 소스 코딩을 하기보다... 빌드환경때문에 시간을 너무 많이 잡아먹네요.
정말 리눅스 환경은 계발자에게는 최악인것 같습니다.
끝까지 읽어주셔서 감사합니가. 꾸벅~
스스로 해결했습니다. 정확히는 제가 한게 아니고... 훌륭하신 여자 프로그래머 황XX 도움으로 해결했습니다.
결론은 NDK에서 iconf 다운받아서 설치후 사이트의 권고안의 ./configure & make & make install해도 절대 동작 안될겁니다.
-arm-linux-eabi 옵션을 줘서 컴파일 해야 하는데... 그렇게 해도 100% 빌드가 안될 겁니다.
중간에 컴파일 오류 나는 것을 하나하나 수정해야 하는데... 문제는 6~7번의 컴파일 빌드 오류를 일일이 잡아야만 빌드 성공후
정상적으로 NDK에서 사용할 수 있더군요.
라이브러리를 처만드는 인간들이... 패키지 설치후 플렛폼별로 빌드가 되는지 여부도 제대로 파악안하고 개발자한테... 사용하라고
빌드하는것 같더라구요. 정말 쓰레기 같은 놈들입니다...
여튼 MFC, java로만 개발하다... 리눅스 개발환경으로 해보니... 정말 리눅스는 못해먹겠더군요... 역시 싼게 비지떡인것 같네요...
이것때문에 몇일을 삽질을 한건지...




.a 나 .so 는 ndk-build 를 성공하면 생성 되던데요^^
iconv 가 뭔지는 모르겠지만 ndk 로 jni 를 사용하는 부분에 대해서 공부하시면 되지 않을까 싶네요.