C++ 및 STL 라이브러리를 사용하여 임베디드 시스템을 프로그래밍하고 있습니다. 메모리가 부족함에 따라 일부 메모리 덤프를 수행하여 메모리가 모두 손실 된 곳을 확인했습니다. 심볼 덤프 (arm-none-eabi-objdump -t
)에서 libstdcC++ 라이브러리에서 많은 항목을 발견했습니다. 예를 들어 moneypunct
클래스의 348 개 항목이 있으며이 클래스를 사용한 적이 없으며 텍스트 출력도 없으므로 현지화 또는 텍스트 서식 지정 클래스가 필요하지 않습니다. STL 라이브러리에서 해당 항목을 모두 스틱 할 수 있습니까?ARM GCC가 포함 된 C++, 불필요한 STL 함수 제거
컴파일러는 GNU 팔 그래서 예를 들면 내장 된 GCC (ARM Embedde 프로세서 용 GNU 도구 6-2017-Q1-업데이트 버전의 gcc 6.3.1)
는 이미 표준 암 GCC의 최적화를 사용한다 -Wl,--gcc-sections
, --specs=nano.sepcs
, 기능 및 데이터 섹션