首頁 > 後端開發 > C++ > 如何將資源嵌入到我的 GCC 可執行檔中?

如何將資源嵌入到我的 GCC 可執行檔中?

Linda Hamilton
發布: 2024-12-19 11:41:17
原創
901 人瀏覽過

How Can I Embed Resources into My GCC Executable?

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

使用GCC 開發C/C 應用程式時,可以方便地將外部二進位資料直接嵌入到可執行檔中可執行檔。這消除了對單獨資源文件的需求,從而簡化了分發。

GCC 的嵌入功能

GCC 提供兩種主要的資源嵌入方法:

    • 利用ld 的-r選項將外部檔案轉換為目標檔案。
    • 將這些物件檔案與您的程式連結以存取二進位資料。
  1. 使用 bin2c/bin2h實用程式:

      將外部檔案轉換為表示二進位資料的 C 陣列。
    • 將這些陣列包含在您的程式碼中並根據需要存取它們。

範例ld

以下是使用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;
}
登入後複製
以下是使用ld 的更詳細範例:

ld -r -b binary -o foo.bar.o foo.bar
登入後複製
在此範例中,名為foo.bar 的檔案被轉換為目標文件(foo.bar.o)使用:

連結器在建立執行檔時包含 foo.bar.o,允許透過符號 _binary_foo_bar_start 和 _binary_foo_bar_end。

大小決定

unsigned int iSize =  (unsigned int)(&_binary_foo_bar_end - &_binary_foo_bar_start);
登入後複製
要確定嵌入資源的大小,請使用:

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板