위성 STB 인 TD9000 을 나 나름대로 이해한 것들을 정리했다. 기존의 ST와는 달리 최종적으로 오브젝트 파일이 하나가 아니기 때문에 각각의 오브젝트 파일이 어디에 있고, 어떤 역할을 하며, 어떻게 만드는 지 알아야 한다.
여기서는 세부적인 소스코드를 보기전에 각 디렉토리의 경로에 대해서 알아보도록 하겠다.
Selevision Makefile 분석
먼저 i.sh 실행하고 나서 Selevision 이라는 오브젝트 파일이 어떻게 나오는지 컴파일 시의 메세지를 통해 알아보자!
다음은 가장 마지막에 앞에서 컴파일한 오브젝트 파일을 각 라이브러리들과 참조해서 최종적인 Selevision 이라는 실행파일을 만드는 메시지이다.
/DATA/HardHat/devkit/ppc/405/bin/ppc_405-g++ -Wl,-rpath,/DATA/Green/Working/QTE/qte-pallas/lib -o Selevision obj/main.o obj/main_widget.o obj/login_profile.o obj/main_win.o obj/window_mode.o obj/main_win_login_user.o obj/main_win_login_password.o obj/main_win_service.o obj/main_win_main_menu.o obj/program_guide.o obj/program_guide_detail.o obj/program_guide_search.o obj/recording.o obj/recorded_content.o obj/organizing_channels.o obj/organizing_favorites.o obj/system_setup.o obj/main_win_ser_tvservices.o obj/main_win_ser_favlist.o obj/main_win_ser_chinfo.o obj/system_chsearch_pidbox.o obj/system_url_input.o obj/system_chsearching.o obj/system_util.o obj/system_network.o obj/system_sat_tpbox.o obj/system_ci.o obj/system_common.o obj/mp3_list.o obj/mp3_player.o obj/commercial_wnd.o obj/volume_wnd.o obj/fax_answer.o obj/fax_viewer.o obj/teletext_win.o obj/main_utility.o obj/xvr_win.o obj/moc_main_widget.o obj/moc_login_profile.o obj/moc_main_win.o obj/moc_main_win_service.o obj/moc_main_win_main_menu.o obj/moc_program_guide.o obj/moc_program_guide_search.o obj/moc_program_guide_detail.o obj/moc_recording.o obj/moc_recorded_content.o obj/moc_main_win_ser_tvservices.o obj/moc_main_win_ser_chinfo.o obj/moc_system_url_input.o obj/moc_system_chsearching.o obj/moc_organizing_channels.o obj/moc_organizing_favorites.o obj/moc_system_setup.o obj/moc_system_network.o obj/moc_system_ci.o obj/moc_mp3_player.o obj/moc_commercial_wnd.o obj/moc_volume_wnd.o obj/moc_fax_answer.oobj/moc_fax_viewer.o obj/moc_teletext_win.o obj/moc_main_utility.o -L/DATA/Green/Working/QTE/qte-pallas/lib -L/DATA/HardHat/devkit/ppc/405/target_td9000/DTVRo/lib -lSelevision_common -lSCommon -lDVB -lK_Base -lTUPVRFS -lModem -lLanguage -lqte
주의깊게 봐야할 부분은 마지막 부분이다. 참조하는 라이브러리들은 디바이스와 관련된 것들이다.
번호 | 옵션 | 소스경로 |
1 | -L/DATA/Green/Working/QTE/qte-pallas/lib | /DATA/Green/Working/QTE/qte-3.2.1-pallas-small-unicodeTBL |
2 | -L/DATA/HardHat/devkit/ppc/405/target_td9000/DTVRo/lib | 단순히 라이브러리를 모아둔 곳 |
3 | -lSelevision_common | /DATA/Green/Working/SELEVISION/Selevision/Selevision_common |
4 | -lSCommon | /DATA/Red/Working/SCommonLib |
5 | -lDVB | /DATA/Green/Working/TD9000/libDVB |
6 | -lK_Base | /DATA/Red/Working/KLib-1.1.0 |
7 | -lTUPVRFS | /DATA/Green/Working/TUsermodePVRFS |
8 | -lModem | /DATA/Green/Working/TD9000/libModem |
9 | -lLanguage | /DATA/Green/Working/TD9000/libLanguage |
10 | -lqte | /DATA/Green/Working/QTE/qte-pallas-small-unicodeTBL |
- -L : 라이브러리 경로를 등록한다.
- -l : 라이브러리 이름을 지정한다.
번호 | 설명 |
1 | QTE 라이브러리가 있는 디렉토리 지정 |
2 | NFS 부팅시 사용되는 디렉토리로서, 모든 라이브러리들이 들어있으며, make install 하면 이곳으로 자동으로 복사된다 |
3 | 해당 디렉토리에서 i.sh 하면 자동으로 복사된다 |
4 | Red 디렉토리에 있지만, 컴파일러만 크로스 컴파일러를 사용하도록 되어있다 |
5 | 해당 디렉토리에서 make; make install 하면 자동으로 복사된다 |
6 | 해당 디렉토리에서 make install 시에 컴파일이 된다 |
7 | 튜너와 관련한 소스 프로그램 |
8 | 모뎀과 관련한 소스 프로그램 |
9 | 언어와 관련한 소스 포르그램 |
10 | QTE 라이브러리 |
그 밖의 라이브러리
/DATA/HardHat/devkit/ppc/405/target_td9000/DTVRo/lib 아래는 위에서 언급한 라이브러리들 말고도 다른 라이브러리들이 있다.
번호 | 이름 | 소스경로 |
11 | libCI.so | /DATA/Green/Working/TD9000/libDVB-1.1.6/CAM |
12 | libmpegdemux.so | /DATA/Red/Working/HXDemux |
13 | libnvram_edit.so | /DATA/Green/Working/TD9000/nvram |
Selevision 생성시에는 링크를 안하지만, NFS 마운트 디렉토리에는 있는 것을 보면, 필요한 것 같다.