>백엔드 개발 >C++ >GCC를 사용하여 리소스를 실행 파일에 원활하게 포함하려면 어떻게 해야 합니까?

GCC를 사용하여 리소스를 실행 파일에 원활하게 포함하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-18 16:32:25776검색

How Can I Seamlessly Embed Resources into Executables Using GCC?

GCC를 사용하여 실행 파일에 리소스를 원활하게 포함

GCC로 컴파일된 C/C 애플리케이션 내에 외부 바이너리 데이터를 쉽게 포함하려면 다음 방법을 고려하십시오.

ld의 객체 생성 활용 기능:

링커인 ld는 모든 파일을 개체로 변환하는 기능을 제공합니다. 파일을 포함하려면 다음 명령을 실행하세요.

ld -r -b binary -o binary.o foo.bar  # then link in binary.o

이렇게 하면 다음과 같은 기호가 포함된 개체 파일("binary.o")이 생성됩니다. as:

  • _binary_foo_bar_start
  • _binary_foo_bar_end
  • _binary_foo_bar_size

예를 들어, 다음을 사용하여 포함된 간단한 텍스트 파일의 내용에 액세스하려면 방법:

#include <stdio.h>

extern char _binary_foo_bar_start[];
extern char _binary_foo_bar_end[];

int main(void)
{
    // Print the contents of the embedded resource
    for (char* p = _binary_foo_bar_start; p != _binary_foo_bar_end; ++p) {
        putchar( *p);
    }

    return 0;
}

Bin2c/Bin2h 유틸리티 사용:

이 유틸리티는 파일을 바이트 배열로 변환합니다. 결과 배열을 코드에 통합합니다.

ld 객체 생성의 예:

리소스를 객체 파일에 통합하는 방법은 다음과 같습니다.

ld -r -b binary -o foo.bar.o foo.bar

결과 개체 파일에는 다음이 포함됩니다. 기호:

  • _binary_foo_bar_start
  • _binary_foo_bar_end
  • _binary_foo_bar_size

내 포함된 리소스에 액세스하려면 코드:

unsigned int iSize = (unsigned int)(&amp;_binary_foo_bar_end - &amp;_binary_foo_bar_start);

리소스 크기를 결정하는 대체 방법을 제공합니다.

위 내용은 GCC를 사용하여 리소스를 실행 파일에 원활하게 포함하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.