boot sd카드 만드는 과정은 이전이랑 거의 같다. 대신 rootfs의 공간이 rootfs.img의 크기에 딱 맞춰지는 문제가 있기 때문에 img파일의 크기를 수정해 주고 다시 fusing을 진행해야한다.
sudo dd if=/dev/zero of =/dev/sdx2 bs=1M count=3072
# sdx2 파티션 포멧
sudo dd if=/dev/zero of=rootfs.img count=0 bs=1M seek=3072
e2fsck -f rootfs.img
resize2fs rootfs.img
# rootfs.img 파일 리사이징
sudo dd if=./rootfs.img of=/dev/sdx2 bs=1M count=3072
# rootfs.img 를 sdx2에 fusing
# ubuntu 상에서 properties를 확인해서 3기가로 인식이 되는지 확인
수정한 sd카드를 이용해서 odroid를 부팅시키고 root/tizen으로 로그인한다.
tizen의 초기 상태는 루트 디렉토리가 read only로 설정되어 있기때문에 다시 마운트를 해줘야함
mount -o rw,remount /
# rw,remount 옵션으로 루트폴더를 mount해준다.
odroid-xu4(armv7l)에 맞는 rpm파일을 구해야 하는데 일반적인 구글링으로 나오는 rpm들은 redhat이나 centOS용이고 target 프로세서도 i386, arm64 이다. 더군다나 패키지 관리 툴인 apt와 yum은 당연히 쓸 수 없다. 따라서 개발에 필요한 vim, gcc, gdb등을 설치해주기 위해서 download.tizen.org에서 armv7l 버전으로 컴파일된 rpm 파일을 찾아야함
rpm 파일을 odroid로 옮겨주기 위해서 usb를 사용한다. ubuntu와 tizen 모두 linux 커널이기때문에 usb를 ext4로 포멧해주는 것이 좋다. tizen에 다른 형식으로 포멧 된 usb를 꽂았을 때 계속 umount가 제대로 되지 않았다는 에러메세지가 출력되는 경우가 있기 때문
mount /dev/sda1 ./usb
# 현제 디렉토리에 usb 폴더를 만들어주고 그곳에 usb를 mount 해주면
# usb에 담긴 파일을 tizen에서도 읽어 올 수 있다.
$ rpm -Uvh gcc-4.9.2-2015.02.1.11.armv7l.rpm
error: Failed dependencies:
binutils >= 2.19.51.0.14 is needed by gcc-4.9.2-2015.02.1.11.armv7l
cpp = 4.9.2-2015.02.1.11 is needed by gcc-4.9.2-2015.02.1.11.armv7l
glibc-devel is needed by gcc-4.9.2-2015.02.1.11.armv7l
libasan >= 4.9.2-2015.02.1.11 is needed by gcc-4.9.2-2015.02.1.11.armv7l
libasan.so.1 is needed by gcc-4.9.2-2015.02.1.11.armv7l
libatomic >= 4.9.2-2015.02.1.11 is needed by gcc-4.9.2-2015.02.1.11.armv7l
libatomic.so.1 is needed by gcc-4.9.2-2015.02.1.11.armv7l
libgcc >= 4.9.2-2015.02.1.11 is needed by gcc-4.9.2-2015.02.1.11.armv7l
libgomp >= 4.9.2-2015.02.1.11 is needed by gcc-4.9.2-2015.02.1.11.armv7l
libgomp.so.1 is needed by gcc-4.9.2-2015.02.1.11.armv7l
libitm >= 4.9.2-2015.02.1.11 is needed by gcc-4.9.2-2015.02.1.11.armv7l
libitm.so.1 is needed by gcc-4.9.2-2015.02.1.11.armv7l
libubsan >= 4.9.2-2015.02.1.11 is needed by gcc-4.9.2-2015.02.1.11.armv7l
libubsan.so.0 is needed by gcc-4.9.2-2015.02.1.11.armv7l
3. gbs를 통해서 빌드했던 tensorflow-lite-devel-dev_preview-1.armv7l.rpm 설치
4. 필요한 패키지 설치 끝. g++을 이용해서 test.cpp를 컴파일 해주면 된다.
```bash
$ rpm -qa | grep tensor
# 텐서플로 설치 확인
$ rpm -qs 텐서플로 패키지명
# 해당패키지가 설치한 파일들을 살펴보면 libtensorflow-lite.a 라는 파일을 찾을 수 있다.
# shared object파일인 .so 파일을 통해서 linking을 해줘야 하는데 gbs로 빌드한 tensorflow-lite
# 패키지가 .a파일을 결과로 내놓아서 g++에 알려줘야하므로 아래 방법으로 컴파일을 해준다.
$ g++ -std=c++11 test.cpp -ltensorflow-lite -ldl -pthread
기존의 glibc를 우리가 설치하려는 gcc에서 못 읽기 때문에 새로 설치를 해줘야 하는데
eglib을 추가로 요구하는 데다가 conflict 때문에 --nodeps --force 옵션으로 glibc를 새로 설치
$ rpm -Uvh glibc-devel-2.20-2014.11.1.10.armv7l.rpm $ rpm -Uvh libasan-4.9.2-2015.02.1.11.armv7l.rpm $ rpm -Uvh libatomic-4.9.2-2015.02.1.11.armv7l.rpm $ rpm -Uvh libgcc-4.9.2-2015.02.1.11.armv7l.rpm $ rpm -Uvh libgomp-4.9.2-2015.02.1.11.armv7l.rpm $ rpm -Uvh libitm-4.9.2-2015.02.1.11.armv7l.rpm $ rpm -Uvh libubsan-4.9.2-2015.02.1.11.armv7l.rpm $ rpm -Uvh info-4.13a-1.6.armv7l.rpm $ rpm -Uvh binutils-2.25.0-2015.01.1.8.armv7l.rpm $ rpm -Uvh gcc-4.9.2-2015.02.1.11.armv7l.rpm
gcc 설치 완료
g++을 사용하기 위해 필요한 라이브러리와 test.cpp를 컴파일하기 위해 필요한 해더파일 설치
$ rpm -Uvh libstdc++-4.9.2-2015.02.1.11.armv7l.rpm $ rpm -Uvh libstdc++-devel-4.9.2-2015.02.1.11.armv7l.rpm $ rpm -Uvh gcc-c++-4.9.2-2015.02.1.11.armv7l.rpm $ rpm -Uvh kernel-headers-3.4.91-1.1.armv7l.rpm
컴파일 끝!