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