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

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

Linda Hamilton
풀어 주다: 2024-12-19 11:41:17
원래의
883명이 탐색했습니다.

How Can I Embed Resources into My GCC Executable?

GCC를 사용하여 실행 파일에 리소스 삽입

GCC로 C/C 애플리케이션을 개발할 때 외부 바이너리 데이터를 직접 실행 파일에 삽입하는 것이 편리할 수 있습니다. 실행 파일. 이는 별도의 리소스 파일이 필요하지 않아 배포를 단순화합니다.

GCC의 임베딩 기능

GCC는 리소스 임베딩에 대해 두 가지 주요 접근 방식을 제공합니다.

  1. 사용 ld:

    • ld의 -r 옵션을 활용하여 외부 파일을 객체 파일로 변환하세요.
    • 이러한 객체 파일을 프로그램과 연결하여 바이너리 데이터에 액세스하세요.
  2. bin2c/bin2h 사용 유틸리티:

    • 외부 파일을 이진 데이터를 나타내는 C 배열로 변환합니다.
    • 이러한 배열을 코드에 포함하고 필요에 따라 액세스합니다.

예시 ld

ld를 사용하는 더 자세한 예는 다음과 같습니다.

#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;
}
로그인 후 복사

이 예에서는 foo.bar라는 파일이 개체 파일(foo.bar.o)로 변환됩니다. 다음을 사용:

ld -r -b binary -o foo.bar.o foo.bar
로그인 후 복사

그런 다음 링커는 실행 파일을 빌드할 때 foo.bar.o를 포함하여 다음을 통해 바이너리 데이터에 액세스할 수 있도록 합니다. _binary_foo_bar_start 및 _binary_foo_bar_end 기호.

크기 결정

포함된 리소스의 크기를 결정하려면 다음을 사용하세요.

unsigned int iSize =  (unsigned int)(&_binary_foo_bar_end - &_binary_foo_bar_start);
로그인 후 복사

위 내용은 내 GCC 실행 파일에 리소스를 어떻게 포함할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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