首頁 >後端開發 >C++ >如何使用 GCC 將二進位資料資源嵌入到可執行檔中?

如何使用 GCC 將二進位資料資源嵌入到可執行檔中?

Patricia Arquette
Patricia Arquette原創
2024-12-18 21:35:17453瀏覽

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

使用GCC 在執行檔中嵌入資料資源

在執行檔中嵌入二元資料對於分發可攜式應用程式非常有益。例如,將著色器程式碼嵌入為二進位資料而不是將其儲存為原始程式碼可以大大增強實用性。

為了實現這一點,GCC 提供了兩個主要選項:

使用ld嵌入二進位檔案

連結器ld 允許將任何檔案轉換器ld 允許將任何檔案轉換器為物件file:

ld -r -b binary -o binary.o foo.bar  # Subsequently link in binary.o

此方法在目標檔案中建立_binary_foo_bar_start、_binary_foo_bar_end 和 _binary_foo_bar_size 等符號。

利用 bin2c/bin2h 公用程式

或者,您可以使用 bin2c/bin2h 公用程式將任何檔案轉換為位元組數組。

使用 ld 進行資料嵌入的範例

以下是如何嵌入的說明性範例使用 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;
}

以上是如何使用 GCC 將二進位資料資源嵌入到可執行檔中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn