Membenamkan Sumber ke dalam Boleh Laksana dan Perpustakaan Dikongsi dengan GCC
Penyataan Masalah:
Cara untuk membenamkan fail sumber secara statik ke dalam fail perpustakaan boleh laku dan dikongsi menggunakan GCC pengkompil?
Penyelesaian:
Untuk membenamkan fail sumber ke dalam program binari menggunakan GCC, ikut langkah berikut:
Buat fail objek: Gunakan utiliti objcopy daripada pakej GNU binutils untuk mencipta fail objek mengandungi data binari fail sumber. Sebagai contoh, untuk menukar fail binari foo-data.bin kepada fail objek:
objcopy -B i386 -I binary -O elf32-i386 foo-data.bin foo-data.o
Pertimbangan Tambahan:
Contoh Penggunaan:
Coretan kod berikut menunjukkan cara menggunakan data sumber terbenam:
extern uint8_t foo_data[] asm("_binary_foo_data_bin_start"); extern uint8_t foo_data_size[] asm("_binary_foo_data_bin_size"); extern uint8_t foo_data_end[] asm("_binary_foo_data_bin_end"); size_t foo_size = (size_t)((void *)foo_data_size); void *foo_copy = malloc(foo_size); assert(foo_copy); memcpy(foo_copy, foo_data, foo_size);
Kod ini membaca sumber foo-data terbenam, menentukan saiznya dan membuat salinan dalam ingatan program.
Atas ialah kandungan terperinci Bagaimana untuk Membenamkan Sumber ke dalam Boleh Laku dan Perpustakaan Dikongsi menggunakan GCC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!