> 백엔드 개발 > C++ > GCC를 사용하여 바이너리 데이터 리소스를 실행 파일에 어떻게 포함할 수 있습니까?

GCC를 사용하여 바이너리 데이터 리소스를 실행 파일에 어떻게 포함할 수 있습니까?

Patricia Arquette
풀어 주다: 2024-12-18 21:35:17
원래의
449명이 탐색했습니다.

How Can I Embed Binary Data Resources into Executables Using GCC?

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

실행 파일 내에 바이너리 데이터를 삽입하면 휴대용 애플리케이션을 배포하는 데 매우 유용할 수 있습니다. 예를 들어 셰이더 코드를 소스 코드로 저장하는 대신 바이너리 데이터로 포함하면 실용성이 크게 향상될 수 있습니다.

이를 달성하기 위해 GCC는 두 가지 기본 옵션을 제공합니다.

ld를 사용하여 바이너리 파일 삽입

링커 ld를 사용하면 모든 파일을 객체로 변환할 수 있습니다. file:

ld -r -b binary -o binary.o foo.bar  # Subsequently link in binary.o
로그인 후 복사

이 접근 방식은 개체 파일 내에 _binary_foo_bar_start, _binary_foo_bar_end 및 _binary_foo_bar_size와 같은 기호를 생성합니다.

bin2c/bin2h 활용 유틸리티

또는 bin2c/bin2h 유틸리티를 사용하여 모든 파일을 바이트 배열로 변환할 수 있습니다.

ld를 사용한 데이터 삽입의 예

다음은 다음을 사용하여 데이터를 삽입하는 방법에 대한 예시입니다. ld:

#include <stdio.h>

extern char _binary_foo_bar_start[];  // Address of the embedded resource
extern char _binary_foo_bar_end[];

int main(void)
{
    int iSize = (unsigned int)(&_binary_foo_bar_end - &_binary_foo_bar_start);

    printf("Size of embedded resource: %d\n", iSize);
    for (char* p = _binary_foo_bar_start; p != _binary_foo_bar_end; ++p)
        putchar(*p);

    return 0;
}
로그인 후 복사

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

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