Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Membenamkan Sumber Secara Statik ke dalam C/C Executable atau Pustaka Dikongsi Menggunakan GCC?
Membenamkan Sumber Secara Statik dalam C/C dengan GCC
Mengintegrasikan fail sumber ke dalam perpustakaan boleh laku atau dikongsi boleh menyelaraskan aplikasi anda dan menghapuskan keperluan untuk kebergantungan fail luaran. Untuk mencapai matlamat ini dengan GCC, pertimbangkan pendekatan berikut:
Kaedah Berasaskan Objcopy:
Gunakan objcopy (GNU binutils) untuk menggabungkan data binari daripada fail ke dalam executable's bahagian data:
objcopy -B i386 -I binary -O elf32-i386 foo-data.bin foo-data.o
Ini mencipta fail .o yang boleh dipautkan ke dalam boleh laku anda. Antara muka C membolehkan mengakses data terbenam melalui simbol seperti:
extern uint8_t foo_data[] asm("_binary_foo_data_bin_start"); extern uint8_t foo_data_size[] asm("_binary_foo_data_bin_size");
Kaedah Berasaskan Perhimpunan:
Gunakan pemasangan untuk membaca data binari terbenam dan menyimpannya dalam pembolehubah . Kaedah ini menawarkan kawalan yang lebih halus dan boleh meletakkan data dalam segmen memori tertentu:
.incbin "foo-data.bin" .equ foo_data_size <size of embedded data> .global foo_data foo_data: .byte <data from embedded file>
Memuatkan Sumber Terbenam:
Setelah terbenam, sumber boleh diakses terus dari dalam anda kod program. Muatkan data ke dalam penimbal memori atau lakukan operasi padanya tanpa perlu mengakses fail luaran.
Perpustakaan Kongsi dan Boleh Laku:
Kedua-dua kaedah berkenaan untuk perpustakaan kongsi dan ELF boleh laku. Hanya pastikan sumber terbenam disertakan semasa proses pemautan binari sasaran.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membenamkan Sumber Secara Statik ke dalam C/C Executable atau Pustaka Dikongsi Menggunakan GCC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!