blueecho의 생각바구니 | blueecho의 생각바구니

blueecho의 생각바구니

누군가에게 "당신은 무엇을 잘하십니까?"라는 질문을 들었을때 바로 대답할것을 만들어보자~!!
  101929      69
전체 (477)
NeWs (19)
배움생활 (86)
취미생활 (115)
끄적끄적 (239)
인생설계 (14)
Wish list (4)
연구실생활 리눅스 지름신 자전거 사진 생일 연애 일본소설 솔카당 연구실 생활 사랑 영화감상 Fedora 장비 선물 카메라 홈페이지 친구 츠지 히토나리 논문 이별 개발 HDL 초속 5cm 유머 학교 verilog 출사 솔로 샌프란시스코
«   2010/07   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

 

개발에 해당하는 글 4개
2010/07/26   링커 스크립트 
2009/12/17   감성을 위한 기술 (2)
2009/03/25   vi를 이용한 개발 관련 팁 과 색인을 이용한 방법 (1)
2009/03/23   diff 와 patch 사용법 

  링커 스크립트 | 2010/07/26 16:53 | 배움생활/SoC   
2010/07/26 16:53 2010/07/26 16:53
링커스크립트 관련 박상호님께서  MPSoC스터디 모임 게시판에 올려주신 내용입니다.


토요일 스터디 모임에서 잠시나마 소개(?)를 했었던 링커 스크립트에 대해서 간략히 요약을 해 드리겠습니다.

링커 스크립트는 한마디로 말하면 object파일들의 각 영역에 대한 재정렬을 하는 스크립트라고 보시면 편하실 것입니다.


 더 자세히 공부해 보고 싶으시는 분들은 다음의 링크를 참조하시기 바랍니다. 한글 번역이 되어 있습니다. 잠시(?) 읽어보셈.. ^^;

http://korea.gnu.org/manual/release/ld/ld-mahajjh/ld_toc.html


  컴파일러가 컴파일을 하게되면 그 결과 파일이 object파일이 생긴다는 것은 잘 알고 계실것입니다.

이 각 object 파일들은 내부적인 어떤 포맷(보통 리눅스는 elf32,  윈도우는 coff 포맷을 가지고 있죠..)에 따라서

여러개의 섹션이란 녀석들을 가지고 있습니다. 대표적인 섹션이라면 코드 섹션(.text) 와 데이터 섹션(.data) 이 있습니다.


각 섹션들은 새롭게 빌드 과정에서 만들어 질수도 있고, 포맷별로 다른 이름을 가지고 있는 경우도 있죠. 컴파일러가

object파일을 만들면서 잘 분류를 해놓아서, 각 섹션에 차곡차곡 그 정보가 쌓여있게 되지요.


이후에 링커가 이들을 가지고 실행파일을 만드는 것을 이미 알고들 있으실터...


  일반적으로 링커는 내부정의된 링커 스크립트를 가지고 있고(default linker script), 이번에 봤던 임의의 스크립트를 연결해서 쓰는

경우도 있죠. 이 스크립트에 의해서 각 섹션을 다시 재 정렬 하는 녀석이 링커가 하는 역할이다라고 보시면 됩니다. 스크립트에 의해 마음대로 위치를 떡 주무르듯 할수가 있는 것이지요.


예를 들어보면, a.o에 (.text, .data)가 있고, b.o에 (.text, .data, .idata)가 있다고 하죠.

스크립트를 다음처럼 구성하면...
section {
 .text : { a.o(.text) } // a.o에서 .text 영역만을 .text 영역으로 구성하라!!
 .data : { *(.data) } // 모든 입력 파일에서의 .data 영역들을 가지고 .data 영역으로 구성하라!!
}

a.o에서 .text영역을 앞에두고, 모든 .data영역을 가지고 있는 입력 파일에서
차례대로 .data 영역을 읽어와 재구성을 하게 됩니다. 그 구성의 내용은

//////////////////////////////
//         a.o(.text)        //
//////////////////////////////
//         a.o(.data)        //
//         b.o(.data)        //
//////////////////////////////

가 되겠습니다. 여기서는 b.o의 .text 영역과 .idata여역은 스크립트에는 정의되지 않았기 때문에
최종 출력파일에는 b.o의 코드 영역은 들어갈수가 없습니다. 예로든 스크립트에
의해서 재정렬을 해보았지만, 결과 파일은 별 의미가 없는것 같군요.. ㅡㅡ;


한페이지 정도로 어떤 역할을 하는지 이해가 가셨으면 이번 글은 성공입니다.. ㅋㅋ

링커 스크립트에는 알수없는 외계(?)문자들이 많이 있으니 각 옵션을 알고 싶으신분은 위쪽 링크를 따라가셈...



트랙백 위치 :: http://blueechos.net/trackback/495
     
  
비밀댓글
  감성을 위한 기술 | 2009/12/17 22:26 | 끄적끄적   
2009/12/17 22:26 2009/12/17 22:26

요즘 학교 화장실에 사람을 감지하고 불을 켜는 시스템이 설치되었다.
뭐냐하면 밤에 사람없을때는 꺼져있다가 사람이 들어오면 켜지고 나가면 꺼지는 형태의 시스템인데 나름대로 사람의 숫자도 카운트 하는 것 같은데...
이게 문제가 뭐냐면 들어갈때 파딱파딱 켜지는 것은 괜찮은데 나갈때 바로꺼지는 건 기분이 나쁘다는 것이죠.
단순히 꺼지는 시간이 5~10초정도만 늘렸어도 나가고 나서 좀 있다가 꺼지면 괜찮을 것 같은데...
하여간, 단순히 비콘과 리시버를 이용해서 전원공급을 ON/OFF하는 시스템이지만 좀만 더 고려하면 좋을 듯한데 기술자들은 쉽지 않죠.
개인적으로 전자기기를 좋아하는 편이기도 하지만 엔지니어계열(?)인 전자공학전공으로 만드는 사람은 많이 써봐야 된다가 슬로건인 저로서는 개발자도 테스트에 참여를 하던지 아니면 테스터들의 역량이 강화되었으면 좋겠어요.
물론 쉽지도 않는데다가 돈이 더 들겠지만 말이죠.. -_-;;

가끔씩 사람이 없는데도 불이 켜져있는 진풍경을 보게 됩니다. 비콘과 리시버의 오동작이죠. 연구실 후배 말로는 달려나가면 감지를 못한다고 하더군요.
역시.. 결함의 발견은 일반적인 행동을 벗어나는 사람이 더 잘 찾는 것 같습니다. ㅋㅋ
뭐, 이것도 일정시간이상 감지가 안되면 꺼지게 하면 될텐데... 고려를 안했나봐요.

저도 개발때 똑같겠죠? 에효....



트랙백 위치 :: http://blueechos.net/trackback/446
Hyperdash 2009/12/20 23:58
센서를 온도 센서로 하면 돈이 비싸려나????
blueecho 2009/12/22 23:14 
아무래도 거리에 대한 감쇄값이 너무 클꺼 같아.
계절에 따라서 온도도 꽤 많이 변할꺼 같고 말야...
     
  
비밀댓글
#1
 
     
- Home
- Guestbook
- Manage - Location
- Tag - Post


 
음... 원래는 잘 몰랐어...
07/23 - blueecho
MPSoC 관심이 많으시나...
07/21 - etguny
음.... 이제 보기 시작...
07/14 - blueecho
프로그래머가 몰랐던 멀...
07/12 - soyoja
자알 잘랐다~~~~ 이뿌구...
07/03 - hyperdash
윽... 저렇게 합성하니...
07/03 - hyperdash
어흑.. .내 자전거도 펑...
07/03 - hyperdash
헉... 저 모니터는........
07/03 - hyperdash
아흑.. 서글픈 글이로구...
07/03 - hyperdash
한자는 나오는데 일본어...
06/12 - blueecho
 
모바일 기기로 블로깅하...
登高自卑
프로그래머의 의욕을 꺽...
하늘걸음
프로그래머의 의욕을 꺾...
觀鷄者의 망상 공간
 
Processor Architect.... egoist
TCL관련 tcl/tk 커뮤니티
지극히 개인적인 SoC 이야기
친절한 임베디드 시스템 개발...
한글텍 사용자 그룹 :: Korea...
Hyperdash's Story
J.U.S.I.L.V.E.R
Soyoja Blog
마고자와 함께
잡다한 이야기