> 백엔드 개발 > C++ > GCC를 사용하여 내 실행 파일에 리소스를 어떻게 포함할 수 있나요?

GCC를 사용하여 내 실행 파일에 리소스를 어떻게 포함할 수 있나요?

Susan Sarandon
풀어 주다: 2024-12-14 15:07:11
원래의
752명이 탐색했습니다.

How Can I Embed Resources into My Executable Using GCC?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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