> 백엔드 개발 > C++ > GCC 및 ld를 사용하여 C/C 실행 파일에서 사용하지 않는 기호를 제거하는 방법은 무엇입니까?

GCC 및 ld를 사용하여 C/C 실행 파일에서 사용하지 않는 기호를 제거하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-12-28 07:55:14
원래의
660명이 탐색했습니다.

How to Strip Unused Symbols from C/C   Executables with GCC and ld?

GCC 및 ld를 사용하여 C/C 실행 파일에서 사용하지 않는 기호를 제거하는 방법

소개

실행 파일 크기 최적화는 임베디드 시스템이나 리소스에서 매우 중요할 수 있습니다. -제한된 환경. 이를 달성하려면 실행 파일에서 사용되지 않는 기호를 제거하는 것이 중요합니다.

GCC 및 ld 기호 제거

GCC 및 ld는 컴파일 및 링크 중에 사용되지 않는 기호를 삭제하는 옵션을 제공합니다.

GCC 옵션

  • -fdata-sections: 코드와 데이터를 각 번역 단위의 개별 섹션으로 분리합니다.
  • -ffunction-sections: 기능을 개별 섹션으로 나눕니다.

ld 옵션

  • -Wl,--gc-sections: 참조되지 않은 섹션을 삭제하도록 ld에 지시합니다.

구현

제거하려면 사용하지 않은 기호는 다음 단계를 따르세요.

  1. 컴파일 -fdata-sections 및 -ffunction-sections 플래그를 사용하여 GCC가 있는 소스 파일.
  2. -Wl,--gc-sections 플래그와 함께 ld를 사용하여 객체 파일을 함께 연결합니다.

두 가지 기능을 포함하는 test.cpp 파일이 있다고 가정해 보겠습니다. 그 중 하나는 다음과 같습니다. 미사용:

int use(int a);
int unused(int a);
로그인 후 복사

사용하지 않는 함수를 제거하려면 다음과 같이 컴파일하고 링크합니다.

gcc -Os -fdata-sections -ffunction-sections test.cpp -o test -Wl,--gc-sections
로그인 후 복사

이 명령은 GCC에 코드와 데이터를 섹션으로 분리하고 ld가 참조되지 않은 섹션을 삭제하도록 지시합니다. , 결과적으로 크기가 줄어든 실행 파일이 생성됩니다.

위 내용은 GCC 및 ld를 사용하여 C/C 실행 파일에서 사용하지 않는 기호를 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿