ホームページ >バックエンド開発 >C++ >GCC を使用してバイナリ データ リソースを実行可能ファイルに埋め込むにはどうすればよいですか?

GCC を使用してバイナリ データ リソースを実行可能ファイルに埋め込むにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-18 21:35:17452ブラウズ

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

GCC を使用して実行可能ファイルにデータ リソースを埋め込む

実行可能ファイル内にバイナリ データを埋め込むことは、ポータブル アプリケーションを配布する場合に非常に有益です。たとえば、シェーダ コードをソース コードとして保存する代わりにバイナリ データとして埋め込むと、実用性が大幅に向上します。

これを実現するために、GCC は 2 つの主要なオプションを提供します。

ld を使用してバイナリ ファイルの埋め込み

リンカー ld を使用すると、あらゆるファイルをバイナリ ファイルに変換できます。オブジェクト ファイル:

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。