Membenamkan Sumber dalam Boleh Laksana dengan GCC
Apabila membangunkan aplikasi C/C dengan GCC, mudah untuk membenamkan data binari luaran terus ke dalam yang boleh dilaksanakan. Ini memudahkan pengedaran dengan menghapuskan keperluan untuk fail sumber yang berasingan.
Keupayaan Pembenaman GCC
GCC menawarkan dua pendekatan utama untuk pembenaman sumber:
Menggunakan ld:
Menggunakan bin2c/bin2h Utiliti:
Contoh dengan ld
Berikut ialah contoh yang lebih terperinci menggunakan ld:
#include <stdio.h> extern char _binary_foo_bar_start[]; extern char _binary_foo_bar_end[]; int main(void) { printf("Address of start: %p\n", &_binary_foo_bar_start); printf("Address of end: %p\n", &_binary_foo_bar_end); for (char* p = _binary_foo_bar_start; p != _binary_foo_bar_end; ++p) { putchar(*p); } return 0; }
Dalam contoh ini, fail bernama foo.bar ditukar kepada fail objek (foo.bar.o) menggunakan:
ld -r -b binary -o foo.bar.o foo.bar
Penyambung kemudiannya termasuk foo.bar.o apabila membina boleh laku, membenarkan akses kepada binari data melalui simbol _binary_foo_bar_start dan _binary_foo_bar_end.
Penentuan Saiz
Untuk menentukan saiz sumber terbenam, gunakan:
unsigned int iSize = (unsigned int)(&_binary_foo_bar_end - &_binary_foo_bar_start);
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membenamkan Sumber ke dalam Boleh Laksana GCC Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!