우선 지난 며칠간 게시 된 내 질문에 따라 행했던 사람들에게 사과합니다. 이것은 -function-sections & -fdata-sections과 관련된 질문을하고 있었기 때문에 조금 반복적으로 들릴 수 있습니다.이 부분은 같은 줄에 있습니다. 그 질문들과 그 해답들이 내 문제를 해결하지 못했기 때문에 여기에서 완전한 문제를 진술하고 SO 전문가들이 그것에 대해 숙고하게하는 것이 최선이라는 것을 깨달았다. 그렇게 일찍 미안해해서 미안해. 나는이 기능을 많이 제공하는 정적 라이브러리의 집합을 구축사용하지 않는 기호가 최종 실행 파일에 링크되지 않도록하는 방법은 무엇입니까?
:
그래서 여기 내 문제를 간다. 이러한 정적 라이브러리는 많은 제품에 제공됩니다. 모든 제품이 내 라이브러리에서 제공하는 모든 기능을 사용하지는 않습니다. 문제는 라이브러리 크기가 상당히 크고 제품이 축소하려는 경우입니다. 주요 목표는 라이브러리 크기 자체가 아닌 최종 실행 파일 크기를 줄이는 것입니다.
이제 저는 연구를 수행하여 소스 파일에 4 개의 함수가 있고 그 중 하나의 함수 만 응용 프로그램에서 사용하는 경우 링커에서 나머지 3 개의 함수를 최종 파일에 포함한다는 것을 알았습니다 모두 동일한 오브젝트 파일에 속하기 때문에 실행 가능합니다. 더 자세히 분석해 보면 -function-sections, -fdata-sections 및 -gc-sections (이 옵션은 링커 옵션 임)은 하나의 함수 만 링크되도록 보장합니다.
하지만 내 제어 할 수없는 이유로 이러한 옵션을 사용할 수 없습니다.
링커가 엄격하게 필요한 기능 만 링크하고 다른 기능이 같은 개체 파일에 있어도 제외하도록하는 다른 방법이 있습니까?
다른 문제를 처리하는 방법이 있습니까?
참고 : 내 코드를 재구성하는 것은 레거시 코드이며 크기가 커서 거의 제외됩니다.
주로 VxWorks & GCC를 다루고 있습니다.
도움 주셔서 감사합니다.
http://groups.google.com/group/gnu.gcc.help/browse_thread/thread/6265551762d9550e이 짧은 토론은 사용자가 요청한 것과 동일한 질문입니다. 컴파일러가하는 것과 링커가하는 일에 대해 깊이있게 알아보십시오. 관심있어. – vpit3833