GCC를 사용하여 실행 파일에 리소스 포함: 세부 가이드
임베디드 C/C 애플리케이션에는 다음과 같은 외부 바이너리 데이터를 포함해야 하는 경우가 많습니다. 셰이더 코드, 글꼴 또는 이미지. 이로 인해 애플리케이션을 단일 실행 파일로 배포할 때 문제가 발생할 수 있습니다. GCC는 이 프로세스를 단순화하는 솔루션을 제공합니다.
옵션 1: ld의 객체 파일 생성 사용
한 가지 방법은 ld의 기능을 활용하여 모든 파일을 객체 파일로 변환하는 것입니다. 이를 통해 연결 단계에서 이진 데이터를 개체로 응용 프로그램에 통합할 수 있습니다. 이렇게 하려면 다음 명령을 사용하십시오.
ld -r -b binary -o binary.o foo.bar # then link in binary.o
옵션 2: bin2c/bin2h 유틸리티 활용
또 다른 옵션은 bin2c/bin2h 유틸리티를 사용하여 변환하는 것입니다. 외부 파일을 바이트 배열로 변환합니다. 그런 다음 이 배열을 코드에 상수로 포함시켜 필요에 따라 바이너리 데이터에 액세스할 수 있습니다.
예: ld -r -b Binary를 사용하여 데이터 삽입
일부 텍스트가 포함된 foo.bar라는 파일이 있는 다음 예를 고려해 보세요.
foo.bar: This is an example text.
To 이 텍스트를 C 프로그램에 삽입하려면 다음 코드를 사용할 수 있습니다.
#include <stdio.h> extern char _binary_foo_bar_start[]; extern char _binary_foo_bar_end[]; int main(void) { printf( "address of start: %p\n", &_binary_foo_bar_start); printf( "address of end: %p\n", &_binary_foo_bar_end); for (char* p = _binary_foo_bar_start; p != _binary_foo_bar_end; ++p) { putchar( *p); } return 0; }
리소스 크기 가져오기
포함된 리소스의 크기를 얻으려면 다음을 사용할 수 있습니다 코드:
unsigned int iSize = (unsigned int)(&_binary_foo_bar_end - &_binary_foo_bar_start)
결론
GCC는 외부 바이너리 데이터를 C/C 실행 파일에 삽입하기 위한 다양한 방법을 제공합니다. 이러한 기술은 실행 파일 자체 내에 리소스 파일을 통합하는 컴팩트하고 독립적인 애플리케이션의 배포를 단순화합니다.
위 내용은 GCC를 사용하여 내 실행 파일에 리소스를 어떻게 포함할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!