Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Membenamkan Sumber ke dalam Boleh Laksana GCC Saya?

Bagaimanakah Saya Boleh Membenamkan Sumber ke dalam Boleh Laksana GCC Saya?

Linda Hamilton
Lepaskan: 2024-12-19 11:41:17
asal
899 orang telah melayarinya

How Can I Embed Resources into My GCC Executable?

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:

  1. Menggunakan ld:

    • Gunakan pilihan ld -r untuk menukar fail luaran kepada fail objek.
    • Pautkan fail objek ini dengan atur cara anda untuk mengakses data binari.
  2. Menggunakan bin2c/bin2h Utiliti:

    • Tukar fail luaran kepada tatasusunan C yang mewakili data binari.
    • Sertakan tatasusunan ini dalam kod anda dan aksesnya seperti yang diperlukan.

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;
}
Salin selepas log masuk

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
Salin selepas log masuk

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);
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan