2014년 4월 17일 목요일

안드로이드 NDK 설치(Windows OS) [1]

안드로이드는 요즘에 많이 사용하는 휴대폰에 들어가는 OS를 말하죠.

안드로이드 앱 프로그래밍은 생각보다 작성하기가 쉬워서 단기간 속성으로도

왠만큼 쓸만한 앱을 만들 수 있을 정도입니다. 그래서 혼자 만들고 혼자만 쓸 수도 있죠.


그런데 안드로이드는 기본적으로 Java 언어로 개발을 하도록 되어있죠.

안드로이드 앱을 Java 언어를 통해서 개발하기 위해서는 'Android SDK'를 설치합니다.

그런데 안드로이드에서 앱의 동작속도(뭐 대개 영상처리에 대한거라고 합니다.)를

올리고 싶어하는 개발자들이 생기면서 C 언어로 동작하는 앱을 만들려고 합니다.

그래서 나온 것이 'Android NDK'가 나오게 됩니다.

저는 영상처리를 하려고 NDK를 설치하는 것은 아니지만 오늘은 NDK를 설치하는 과정을

블로그에 남기도록 해보겠습니다. (물론 1시간만에 끝날리가 없지만요)



처음으로 'Android SDK'를 설치합니다.

다운로드 페이지 ; http://developer.android.com/sdk/index.html


파란색의 다운로드 버튼을 누르면 다운로드가 시작됩니다.

예전에는 SDK가 올인원(All-in-one)이 아니었지만 현재는 올인원형식으로 바뀌었기 때문에

JDK
만 따로 설치하고 SDK를 받으면 무난하게 실행이 됩니다.

JDK
는 Java를 사용하기 위해서 설치하는 패키지입니다.

다운로드 페이지 ; http://www.oracle.com/technetwork/java/javase/downloads/index.html

다운로드 페이지에 링크로 들어가게 되면 위의 그림과 같은 화면이 나오게 되는데요.

왼쪽 아래부분에 화살표가 가리키는 버튼을 눌러줍니다.

그럼 jdk 목록이 보이게 됩니다. 여기서 자신과 맞는 운영체제를 선택해 줍니다.

저는 Windows x86용(32비트용)으로 하겠습니다. 설치할 때 따로 조심해야 될 것이 없어서

설치했다고 생각하고 넘어가도록 하죠. (NDK는 시작도 안했으니까요. 문제가 생길 시 댓글)

그럼 이걸로 Android SDK 준비가 완료되었습니다. (휴우~ 길다.)

이제 본격적으로 NDK를 사용하기 위한 작업을 시작하겠습니다.

참고자료 ; http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/



우선은 Android SDK에 있는 eclipse를 실행합니다.

중간에 물어보는 workspace는 자신이 나중에 찾기 쉬운 위치로 설정하시면 됩니다.

이제 이클립스에서 메뉴를 선택합니다.


위의 그림에 화살표가 가리키는 Help를 누르면 Install New Software 가 있습니다.

선택해주면 창이 하나 뜨게 됩니다.

'Work with' 에 'Juno'라고 입력하면 선택창이 뜨게 되는데 하나밖에 안 뜨니까 걱정 없구요

참고자료에는 'Galileo'를 선택하는데 저는 'Juno'로 하겠습니다.

Juno
를 했을 때 아래 목록이 나오는데요. 거기서 Programming Languages 목록을 펼쳐서

C/C++ Development Tools SDK
를 선택해 줍니다. 위의 그림 화살표 처럼요.

그럼 이제 설치가 되면서 이클립스가 한 번 재시작 될꺼에요. 너무 놀라지 마세요.



이제 그럼 다음 단계로 넘어갑니다. Windows 에서 Unix 계열과 같은 명령을 수행하기 위해

Cygwin
이라는 툴을 사용합니다. 근데 이 툴이 설치할 때 참 문제가 많습니다. 귀찮은 툴이죠.

cygwin
홈페이지 ; www.cygwin.com

위의 그림에서 화살표가 가르키는 부분을 클릭하여 설치파일을 받습니다.

설치파일을 실행하고 다음과 그림과 같이 진행을 합니다.

여기까지는 특별한 것이 없습니다. 여기까지 진행 후 나오는 다음화면에서

패키지 선택에서 Devel 카테고리가 있는데요(위의 화살표 부분입니다.). 처음에는 Default로

설정되어 있습니다. 이 부분을 클릭하여서 Install로 바꿔서 설치해줍니다.

패키지를 선택하고 나서 계속 진행을 하면 인터넷을 통해 설치가 진행됩니다.

여기서부터는 인고의 시간이 기다리고 있습니다........................................

그럼 오늘은 여기까지 하고 내일 이어서 하도록 하죠.

2013년 5월 17일 금요일

리눅스에서 파일 끝문자 "^M"을 없애는 방법

리눅스를 사용 중일 때 가끔 윈도우에서 작업한 파일을 열다보면
파일의 끝에 ^M 문자가 보일 때가 있다.
이 경우 파일을 알아보기 힘들기 때문에 이 문자를 삭제하는 방법으로

vi 또는 vim 에서 다음 명령어를 입력하면 된다.

   :%s/[Ctrl+v][Ctrl+m]//

2013년 4월 29일 월요일

make menuconfig 명령어 실행 설치 패키지

make menuconfig 명령어를 실행하려고 할 때 패키지가 제대로 설치되어 있지 않다면




 *** Unable to find the ncurses libraries or the
 *** required header files.
 *** 'make menuconfig' requires the ncurses libraries.
 ***
 *** Install ncurses (ncurses-devel) and try again.
 ***



위와 같은 오류를 볼 수 있는데, 이럴때 패키지를 설치를 해야 하는데 너무 자주 까먹어서

블로그에 적어놓도록 하겠습니다. 설치 명령어는 다음과 같습니다.

   sudo apt-get install libncurses5-dev

위의 명령어를 입력하게 되면 make menuconfig 명령어를 수행하기 위해서 

필요한 패키지가 설치 된 것입니다.

패키지를 설치한 후에 확인을 하기 위해서 

   sudo make menuconfig

를 입력하면 제대로 동작하는 것을 확인할 수 있을 것 입니다.

참고로 말하지만, sudo 명령어를 잊지 마세요.

(난 방금 잊어먹고 왜 안되나 했음요 ㅠㅠ)

error: stray '\357' in program 오류 해결방법


짜증나던 문제를 해결을 해서 그 문제에 대한 이야기를 할까 합니다.

리눅스에서 소스코드를 컴파일하다 보면 종종

error: stray '\357' in program
error: stray '\273' in program
error: stray '\277' in program
error: stray '#' in program

이런식의 에러가 나는 경우가 있는데요. 

황당한것은 어디서는 되고 어디서는 안되는 짜증유발을 하게 한다는 것이지요.

저도 오랜만에 당하는 일이라서 짜증이 폭발할 지경이었습니다. 

리눅스에서 

file [파일명] 

명령을 입력하면 명령에 대한 결과로

UTF-8 Unicode (with BOM) C program text

와 같은 출력문을 볼 수 있습니다. 저도 처음에는 "이게 왜 안되지?" 라는 생각이 들었습니다만.

이 문제의 경우에는 파일형식에 대한 문제라기보다는 파일의 끝문자가 다르기 때문이라는거 같더라고요.

뭐 저는 그래서 이렇게 저렇게 해보다가 결국은 vim에서 (저는 주로 vim을 사용합니다.)

:set nobomb

명령을 입력하고 저장하면 소스가 컴파일이 되더라고요. 무척 간단했죠. -ㅅ-;;;

넵. 해결하고도 짜증이 폭발했습죠. 여러분들도 이 글을 빨리 찾으셨다면 짜증이 안나셨겠지만

오래 걸려서 찾으셨다면 심심한 위로의 말씀을 드리고 싶군요.

2012년 5월 24일 목요일

우분투 12.04 사용후기

우분투가 새로운 LTS 버전으로 12.04를 내놓았는데 노트북에 설치해서 사용하고 있습니다.
뭐 사용하는 느낌은 뭐 11.04랑 별로 다른 느낌을 받지는 못하겠습니다만.
10.04를 사용하다가 갑자기 12.04를 사용하시려면 이게 뭔가 싶을 느낌이 들겠죠.

그리고 우분투 12.04에서 "리그오브레전드" 한국 서버 버전을 PlayOnLinux를 사용해서 설치해 보았는데 로비화면까지는 잘 동작했구요. 게임 시작은 안되네요. 노트북에 네트워크가 뭔가 이상한거 같지만. 아직까지 정확한 내용은 모르겠네요. 그래서 현재는 덩치만 큰 메신저가 되어 버렸습니다. 안타까운 저의 현실이죠. 천천히 뭔가 해결책을 찾아야겠습니다. 이게 중요한게 아니니까요 ㅋ