Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Membenamkan Sumber Data Perduaan ke dalam Boleh Laku Menggunakan GCC?

Bagaimanakah Saya Boleh Membenamkan Sumber Data Perduaan ke dalam Boleh Laku Menggunakan GCC?

Patricia Arquette
Lepaskan: 2024-12-18 21:35:17
asal
449 orang telah melayarinya

How Can I Embed Binary Data Resources into Executables Using GCC?

Benamkan Sumber Data dalam Boleh Laku dengan GCC

Membenamkan data binari dalam boleh laku boleh memberi manfaat yang besar untuk mengedarkan aplikasi mudah alih. Sebagai contoh, membenamkan kod shader sebagai data binari dan bukannya menyimpannya sebagai kod sumber boleh meningkatkan kepraktisan.

Untuk mencapainya, GCC menawarkan dua pilihan utama:

Menggunakan ld untuk Benamkan Fail Binari

Penyambung, ld, membenarkan penukaran mana-mana fail kepada objek fail:

ld -r -b binary -o binary.o foo.bar  # Subsequently link in binary.o
Salin selepas log masuk

Pendekatan ini mencipta simbol seperti _binary_foo_bar_start, _binary_foo_bar_end dan _binary_foo_bar_size dalam fail objek.

Memanfaatkan bin2c/bin2h Utiliti

Sebagai alternatif, anda boleh menggunakan utiliti bin2c/bin2h untuk menukar mana-mana fail kepada tatasusunan bait.

Contoh Pembenaman Data Menggunakan ld

Di bawah ialah contoh ilustrasi cara membenamkan data menggunakan ld:

#include <stdio.h>

extern char _binary_foo_bar_start[];  // Address of the embedded resource
extern char _binary_foo_bar_end[];

int main(void)
{
    int iSize = (unsigned int)(&_binary_foo_bar_end - &_binary_foo_bar_start);

    printf("Size of embedded resource: %d\n", iSize);
    for (char* p = _binary_foo_bar_start; p != _binary_foo_bar_end; ++p)
        putchar(*p);

    return 0;
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membenamkan Sumber Data Perduaan ke dalam Boleh Laku Menggunakan GCC?. 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