Ubuntu에 AllJoyn 프레임워크 개발 환경 설정, 소스 빌드, 기본 샘플 구동 확인하기

이번 포스팅은 설치된 우분투 리눅스에서 AllJoyn 프레임워크 설치 및 기본 샘플 구동을 확인하는 내용을 기술했습니다.

Host OS는 맥OS상에서 VirtualBox로 Guest OS로 Ubuntu 15.04 버전이 설치된 환경에서 확인한 사항입니다. Host OS가 윈도우나 기타 다른 OS일지라도 Guest OS가 Ubuntu 15.04 기준으로 설치된 환경이라면 동일한 환경의 설치과정으로 이해하면 됩니다.

VirtualBox를 이용한 Ubuntu 15.04의 설치는 이전 포스팅을 참조하세요.
VirtualBox를 이용하여 Guest OS로 Ubuntu 15.04 설치하기


1. AllJoyn 프레임워크(v15.04) 개발 환경 설정

먼저 Ubuntu가 설치된 상태라면, 기본 package 내용을 update하고 upgrade 합니다.
$ sudo apt-get update
$ sudo apt-get upgrade

빌드 툴과 라이브러리 설치
$ sudo apt-get install build-essential
$ sudo apt-get install libgtk2.0-dev
$ sudo apt-get install xsltproc
$ sudo apt-get install libxml2-dev
$ sudo apt-get install libcap-dev

또는 각각의 패키지 명칭을 연속해서 붙여서 한번에 인스톨 진행해도 됩니다.
$ sudo apt-get install build-essential libgtk2.0-dev libssl-dev xsltproc libxml2-dev libcap-dev

설치중에 패키지에 따라 종속된 다른 패키지의 설치가 필요할 경우 계속할 건지 물어봅니다. Do you want to continue[Y/n]?  프롬프트가 나타나면 y를 입력하고 계속 진행하도록 합니다.

AllJoyn 리눅스 빌드 가이드에 ia32-libs도 설치하라고 명시되어 있지만, 현재 ia32-libs 패키지는 설치가능하지 않으므로 무시하고 진행 합니다.

Python 설치
Python 은 버전3는 현재 지원하지 않으므로, 2.6 or 2.7 버전을 설치 합니다.
$ sudo apt-get install python

Scons 설치
Scons는 AllJoyn 프레임워크 빌드 툴로 사용됩니다. 아래 명령으로 설치 합니다.
$ sudo apt-get install scons

OpenSSL 설치(옵션사항)
OpenSSL은 선택설치 사항이므로 필요에 따라 설치 합니다.
$ sudo apt-get install libssl-dev

Git 설치
AllJoyn소스 코드는 git프로젝트들로 구성되어 있습니다. 소스 저장소 접근 툴인  git를 설치합니다.
$ sudo apt-get install git-core

Repo 설치

AllJoyn소스는 여러 git프로젝트들로 구성되어 있고,  구글이 만든 git 저장소 관리 도구인 Repo툴의 사용으로 소스의 접근을 보다 쉽게 할 수 있습니다. repo 설치 및 사용을 추천하므로 설치하도록 합니다.
curl을 먼저 설치합니다.
$ sudo apt-get install curl

홈디렉토리로 이동해서 bin 디렉토리를 만들고 repo를 설치합니다.
$ cd ~
$ mkdir bin
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

repo를 /usr/local/bin에 copy하고 실행가능하도록 모드를 변경합니다.
$ sudo cp ~/bin/repo /usr/local/bin
$ sudo chmod a+x /usr/local/bin/repo

Uncrustify 설치
AllJoyn소스 코드상에서 코딩 일관성을 유지하기 위해 소스코드 포맷팅 툴인 Uncrustify를 사용합니다. AllJoyn v15.04 이상에서는 Uncrustify v6.1이 요구됩니다.
홈 밑에 uncrustify디렉토리를 만들고 github에서 clone 받고 체크아웃합니다.
$ mkdir ~/uncrustify
$ cd ~/uncrustify
$ git clone http://github.com/bengardner/uncrustify.git
$ cd uncrustify
$ git checkout uncrustify-0.61

Doxygen 설치

소스코드로 부터 HTML문서화를 만드는 Doxygen을 설치합니다. Doxygen은 AllJoyn바이너리 빌딩에 사용되는 것은 아닙니다.
$ sudo apt-get install doxygen

Graphviz 설치
Graphviz는 Doxygen에 의해 사용되고, 클래스 계층도의 다이아그램을 표현하는데 사용됩니다.
$ sudo apt-get install graphviz


TeX Live 설치
소스로 부터 (AllJoyn API 문서화)PDF문서를 만드는 툴인 TeX Live를 설치합니다.  필수사항은 아니며 필요에 따라 설치합니다.
$ sudo apt-get install texlive


Gecko 설치
Gecko는 오직 AllJoyn JavaScript 플러그인 빌딩할때 설치하며 옵션 사항 입니다.
Gecko SDK (aka XULRunner SDK) 링크 사이트의 설치 가이드를 참고합니다.

Java 설치
리눅스 상에서 AllJoyn 프레임워크를 빌드하기 위해 Java 6 공식 버전으로 요구됩니다.  Ubuntu 12.04 이상 버전에서 Java 6(jdk1.6) 설치 과정 입니다.
가이드에 의하면 apt-get install로 자바를 설치시 open-jdk가 설치되므로 sun-jdk(오라클에서 배포하는 jdk)를 직접 다운받아 설치할 것을 권고합니다. 따라서, firefox 웹브라우저를 실행하여 다음 주소로 찾아가서 해당 jdk 버전을 받습니다.
http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html  에서 Jdk 6u32를 찾아 Accept License Agreement 를 선택하고 해당 OS에 맞는 파일을 다운로드 받습니다. (64Bit Ubuntu Linux가 설치 되어 있으므로 jdk-6u32-linux-x64.bin을 선택, 32Bit Ubuntu linux는 jdk-6u32-linux.i586.bin)
다운받은 파일은 $Home/Downloads 디렉토리에 있습니다.
디렉토리를 이동하고 실행하기위해 권한을 변경합니다.
$ cd ~/Downloads
$ chmod +x jdk-6u32-linux-x64.bin

bin파일을 실행하여 압축해제 합니다.
$ ./jdk-6u32-linux-x64.bin

/usr/lib/jvm 디렉토리가 없다면 생성하고,
압축해제된 jdk1.6.0_32 디렉토리를 /usr/lib/jvm/으로 이동 시킵니다.
$ sudo mkdir /usr/lib/jvm
$ sudo mv jdk1.6.0_32 /usr/lib/jvm

새로 설치한 jdk로 자바 설정들을 지정합니다.
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_32/bin/javac 2
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_32/bin/java 2
$ sudo update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/jdk1.6.0_32/bin/javaws 2


디폴트 자바로 설정합니다.
$ sudo update-alternatives --config javac
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javaws


자바설치가 완료되었으며, 설치된 jdk버전을 확인할 수 있다.
$ java -version
java version "1.6.0_32"
Java(TM) SE Runtime Environment (build 1.6.0_32-b05)
Java HotSpot(TM) 64-Bit Server VM (build 20.7-b02, mixed mode)

AllJoyn 자바 바인딩 빌딩을 한다면 Junit을 설치합니다.
https://github.com/junit-team/junit/wiki/Download-and-Install 로 웹브라우저로 접근하여 junit.jar를 선택하고 junit-4.9.jar파일을 다운로드 받습니다.
다운로드 받은 junit-4.9.jar 파일을 /usr/share/java/ 디렉토리밑에 복사합니다.
$ sudo cp junit-4.9.jar /usr/share/java/

junit tests를 실행하기 원한다면 ant 툴을 설치합니다(AllJoyn 빌드에는 ant가 사용되지는 않습니다)
$ sudo apt-get install ant


GoogleTest 설치하기
google tests는 옵션사항으로 AllJoyn 프레임워크 의 C++ 유닛테스트를 수행하기 위한 도구입니다.
인터넷 브라우저로 http://code.google.com/p/googletest/downloads/list 에서  gtest1.7.0.zip 파일을 선택합니다. 해당 zip파일을 다운받고 자동 오픈하면 gtest-1.7.0 디렉토리를
$Home/gtest 디렉토리를 생성하고, 그 밑으로 옮겨 놓습니다.



2. AllJoyn 소스 다운로드 및 빌드하기

$Home 디렉토리 밑에 AllJoyn을 설치할 워킹디렉토리를 먼저 만듭니다.
워킹 디렉토리는 "alljoyn"으로 지정했습니다.
$ cd ~
$ mkdir alljoyn
$ cd alljoyn

다운받을 alljoyn소스는 v15.04버전으로 git 보다는 Repo를 이용하여 쉽게 다운받고자 합니다.
먼저 git의 email, name 설정을 합니다. "YOUR_EMAIL", "YOUR_NAME"은 본인의 계정 및 이름을 사용합니다.
$ git config --global user.email "YOUR_EMAIL"
$ git config --global user.name "YOUR_NAME"

repo init 설정시 v15.04 버전을 지정하고 sync로 소스를 다운로드 받습니다.
$ repo init -u https://git.allseenalliance.org/gerrit/devtools/manifest -b RB15.04
$ repo sync

설치된 소스 디렉토리가 아래와 같이 생성됨을 확인합니다.
$ ls
core  data  devtools  services

AllJoyn환경 설정하기
우분투 사용자 계정으로 로그인해서 AllJoyn관련 코드 작성 및 빌드등을 할때, 환경설정을 만들어 두면 편리합니다. 환경설정은 윈도우의 bat파일과 같이 매번 로그인시에 공통으로 설정되는 환경으로 이해 하면 됩니다. 각 사용자 계정의 환경 설정 파일은 $HOME/.bashrc 파일 입니다.
.bashrc 파일을 vi로 열어서 맨 아래 AllJoyn관련 root 디렉토리($HOME/alljoyn)와 별도로 지정한 alljoyn profile(.aj_profile)을 source 명령어로 포함하도록 했습니다.
source 는 bash쉘의 내부 명령어로, source 뒤에 지정한 파일을 읽어 파일내에 지정한 명령을 실행하는 명령어 입니다.
#for alljoyn
export AJ_ROOT="$HOME/alljoyn"
if [ -f $AJ_ROOT/.aj_profile ]; then
    source $AJ_ROOT/.aj_profile
fi

$AJ_ROOT/.aj_profile 파일에는 다음과 같은 기본 환경 설정 내용을 기록합니다.
export TARGET_CPU="x86_64"

export JAVA_HOME="/usr/lib/jvm/jdk1.6.0_32"
export CLASSPATH="/usr/share/java/junit-4.9.jar"
# js로 바인딩하기 위해서는 GECKO_BASE가 필요함.
# export GECKO_BASE=~/xulrunner-sdk

export GTEST_DIR="$HOME/gtest/gtest-1.7.0"

export AJ_DIST="$AJ_ROOT/core/alljoyn/build/linux/$TARGET_CPU/debug/dist"
export CXXFLAGS="$CXXFLAGS 
    -I$AJ_DIST/cpp/inc 
    -I$AJ_DIST/about/inc 
    -I$AJ_DIST/services_common/inc 
    -I$AJ_DIST/notification/inc 
    -I$AJ_DIST/controlpanel/inc 
    -I$AJ_DIST/services_common/inc 
    -I$AJ_DIST/samples_common/inc"

export LDFLAGS="$LDFLAGS 
    -L$AJ_DIST/cpp/lib 
    -L$AJ_DIST/about/lib 
    -L$AJ_DIST/services_common/lib 
    -L$AJ_DIST/notification/lib 
    -L$AJ_DIST/controlpanel/lib"

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$AJ_DIST/cpp/lib


환경 설정 이후, 현재 커맨드창에서 바로 적용하려면 source .aj_profile 하면되고,
추후 다시 로그인 하거나 새로운 Terminal 윈도우를 오픈하게 되면 자동적으로 .bashrc 에 의해 .aj_profile이 적용됩니다.

이제 scons 를 이용하여 빌드가 가능한 상태가 되었다고 보면 됩니다.
기본 core/alljoyn을 빌드하기 위해 AJ_ROOT로 가서 core/alljoyn 디렉토리로 가면 SConstruct 파일이 있습니다.
$ cd $AJ_ROOT
$ cd core/alljoyn

scons로 빌드 합니다. (js를 위한  Gecko까지 설치했다면 바인딩 할 언어는 cpp,c,java,unity,js 모두 지원가능합니다)  아래 명령으로 원하는 Bindings를 지정하여 빌드를 확인합니다. (32bit 인경우  cpu=x86_64는 생략)
$ scons WS=off cpu=x86_64 BINDINGS=cpp,c,java 

scons 빌드시 사용하는 각종 파라메터는 필요에 따라 사용자 지정해서 사용하도록 합니다.
기본적으로 빌드가 완료되면, "scons: done building targets."로 완료됩니다.
기본 컴파일된 기본 예제를 확인 할 수 있습니다.

3. AllJoyn 샘플 구동 확인하기

빌드된 core의 샘플 서비스 및 클라이언트를 확인 할 수 있습니다.
환경 설정에 정의한 AJ_DIST 로 이동합니다.
$ cd $AJ_DIST
$ ls
c       controlpanel  java         onboarding  ReleaseNotes.txt
config  cpp           notification README.txt  services_common    

c,cpp,java 및 각 서비스 하위에 빌드된 바이너리들이 존재합니다.
cpp/bin 밑의 기본 demon 예제를 구동 확인해 봅니다.
$ cd cpp/bin
$ ./alljoyn-daemon

정상적인 빌드와 실행이 되면 아래와 같이 디스플레이 됩니다.
AllJoyn Message Bus Daemon version: v15.04.00b
Copyright AllSeen Alliance.

Build: AllJoyn LIbrary v15.04.00b (Build Sat Oct 10 .... 생략)
Setting up transport for address: tcp:iface=*,port=9955
Setting up transport for address: udp:iface=*,port=9955
Setting up transport for address: unix:abstract=alljoyn

데몬 서비스의 종료는 "ctrl + c" 로 종료 가능합니다.

이상으로 Ubuntu 15.04에 AllJoyn 프레임워크 v15.04 버전의 빌드를 위한 환경 설정, 소스 빌드, 기본 샘플 구동 확인을 해 보았습니다.



참조 사이트
https://allseenalliance.org/developers/develop/building/linux/build-source

댓글

이 블로그의 인기 게시물

AllJoyn 이해 - Architecture 개념 정리

Virtual Box에서 공유폴더 설정하기

라즈베리파이2 구입 및 간단 설치하기 (NOOBS)