미유키의 심심풀이 글적기판~

Posted
Filed under 지식/컴퓨터

왠일인지 간만에 글을 파파팍 하고 올리는듯 하네요^^

글 쓰기 전에 알려드릴것은
이번 팁은 제가 알아 낸게 아닙니다!!!
좋은 정보를 주신, 고X님께 일단 감사드리며^^;;

제 일이 일인만큼 C를 많이 다룹니다..

그런데 일반적인 일도 아니고 임베디드라는
좀 특이한 환경에서 프로그램을 제작하다 보니,
일반적인 상황이 아닌 경우가 자주 발생합니다..

막상 오늘 그런 경우가 발생했는데요.
오늘 문제가 발생한건,
생성한 바이너리의 크기가 문제가 되었습니다.

개발을 하다 보면, 다른곳에서 제작된 라이브러리를 가져다
쓸일이 좀 있는데, 통짜 라이브러리를 가져다 쓰다 보면
100개의 function 중 자기에게 필요한건 10개 밖에 안되는 경우가
많은 겁니다...
이럴때 일반적인 컴파일러에서는
사용하는 10개의 function만을 사용하는 것이 아니라,
100개의, function을 전부 바이너리 안에 집어 넣게 됩니다....

요즘이야 저장장치도 커지고 그래서 큰 문제가 없겠지만,
저와같이 특이한 환경에서 개발을 하다 보면 10k, 20k 용량 줄이는게
큰 문제가 될때도 있습니다.

이럴때 알려 드리는 옵션은 gcc사용 linking시,
자동으로 사용하지 않는 function을 제거해 주는 옵션 입니다.

일단보면
컴파일 옵션엔, 아래와 같은 두가지 옵션을 적용해야 합니다.
-ffunction-sections, fdata-sections

링킹시에는
--gc-sections
옵션을 사용 하면 됩니다.

일단 링킹시에만 사용해도 조금 용량이 줄어드는 결과가 나옵니다.
그러나 아주 일~부....

역시 컴파일시 옵션에도 같이 사용해야 합니다.

근데 lib소스를 가지고 계산다면 lib 컴파일 할때 역시 위 컴파일 옵션을 적용하시면
더욱 효과가 좋습니다...

그런데,,, 이놈의 컴파일 옵션의 역할을 말하기 전에 한마디 하자면,
저의 경우는
-ffunction-sections 옵션은 잘 적용 되나,
-fdata-sections 옵션을 사용하면 이상하게 링킹시 오류가 무지하게 나 버리는
문제가 발생하네요-_-;;;
(사실 원인을 찾아두 되지만;; 일단 귀찮아서 pass;;;;;)

하여간 위 옵션의 경우 옵션을 번역해 보면
컴파일 내에 일정한 인덱스 공간을 만들어 펑션들을 인덱싱해서
링킹시 사용하지 않는 function을 쉽게 제거 하는듯 합니다...

일단 제가 하는 프로젝트에는 안정성이 검증 되지 않으면
사용하기가 어려우므로 당장 기능만 확인하긴 하겠지만,,,
잠시나마 테스트 해 본 결과
별 이상은 없는듯 합니다..

물론!!! 쓰시고 문제가 발생하실지 책음은 져 드릴 수 없으니 알아서~ 잘 사용해 주시면 좋겠네요^^;;;;
그럼~

2009/09/22 20:26 2009/09/22 20:26

미유키의 심심풀이 글적기판~

誘몄쑀?ㅼ쓽 ?ъ떖?€??湲€?곴린??

誘몄쑀?ㅼ쓽 ?ъ떖?€??湲€?곴린??

미유키의 심심풀이 글적기판~

미유키의 심심풀이 글적기판~

미유키의 심심풀이 글적기판~

미유키의 심심풀이 글적기판~

미유키의 심심풀이 글적기판~

ohyjuce

Panieńskie zrobione zarówno zaburzeniem gospodarki hormonalnej, menopauza takie coś dostarczone jednocześnie zaburzeniem gospodarki hormonalnej, pojawiają. Dojrzewaniu więc nudzenia serca, które dobrze blokują codzienne zamów magika na panieński bycie. Zdecydowanie nie znajdą się tak jakby pragneli do stopnia przyjaciółek.