GCC を使用して C/C にリソースを静的に埋め込む
リソース ファイルを実行可能ファイルまたは共有ライブラリに統合すると、アプリケーションを合理化し、必要性を排除できます。外部ファイルの依存関係の場合。 GCC でこれを実現するには、次のアプローチを検討してください。
Objcopy ベースの方法:
objcopy (GNU binutils) を利用して、ファイルのバイナリ データを実行可能ファイルにマージします。データ セクション:
objcopy -B i386 -I binary -O elf32-i386 foo-data.bin foo-data.o
これにより、.o ファイルが作成されます。実行可能ファイルにリンクできます。 C インターフェイスでは、次のようなシンボルを使用して埋め込みデータにアクセスできます。
extern uint8_t foo_data[] asm("_binary_foo_data_bin_start"); extern uint8_t foo_data_size[] asm("_binary_foo_data_bin_size");
アセンブリベースのメソッド:
アセンブリを使用して、埋め込みバイナリ データを読み取り、変数に格納します。 。このメソッドはより詳細な制御を提供し、特定のメモリ セグメントにデータを配置できます:
.incbin "foo-data.bin" .equ foo_data_size <size of embedded data> .global foo_data foo_data: .byte <data from embedded file>
埋め込みリソースのロード:
一度埋め込まれると、リソースは内部から直接アクセスできます。プログラムコード。外部ファイルにアクセスすることなく、データをメモリ バッファにロードしたり、データに対して操作を実行したりできます。
共有ライブラリと実行可能ファイル:
どちらの方法も、共有ライブラリと実行可能ファイルに適用できます。 ELF 実行可能ファイル。ターゲット バイナリのリンク プロセス中に埋め込みリソースが含まれていることを確認するだけです。
以上がGCC を使用して C/C 実行可能ファイルまたは共有ライブラリにリソースを静的に埋め込むにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。