第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用gcc mingw嵌入二進(jìn)制Blob

使用gcc mingw嵌入二進(jìn)制Blob

C
江戶川亂折騰 2019-11-27 11:17:55
我正在嘗試將二進(jìn)制Blob嵌入到exe文件中。我正在使用mingw gcc。我制作目標(biāo)文件是這樣的:ld -r -b binary -o binary.o input.txt然后,我查看objdump輸出以獲取符號(hào):objdump -x binary.o它給出了名為的符號(hào):_binary_input_txt_start_binary_input_txt_end_binary_input_txt_size然后,我嘗試在我的C程序中訪問它們:#include <stdlib.h>#include <stdio.h>extern char _binary_input_txt_start[];int main (int argc, char *argv[]){    char *p;    p = _binary_input_txt_start;    return 0;}然后我這樣編譯:gcc -o test.exe test.c binary.o但是我總是得到:undefined reference to _binary_input_txt_start有人知道我在做什么錯(cuò)嗎?
查看完整描述

3 回答

?
青春有我

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊

在您的C程序中,刪除前劃線:


#include <stdlib.h>

#include <stdio.h>


extern char binary_input_txt_start[];


int main (int argc, char *argv[])

{

    char *p;

    p = binary_input_txt_start;


    return 0;

}

C編譯器經(jīng)常(總是?)似乎在extern名稱前加下劃線。我不完全確定為什么會(huì)這樣-我認(rèn)為這個(gè)Wikipedia文章聲稱存在某些道理,


對(duì)于C編譯器,通常的做法是在所有外部作用域程序標(biāo)識(shí)符前加一個(gè)下劃線,以免與運(yùn)行時(shí)語言支持產(chǎn)生的沖突


但是讓我感到震驚的是,如果在所有externs之前都加了下劃線,那么您實(shí)際上并沒有對(duì)分區(qū)進(jìn)行太多分區(qū)。無論如何,這又是一個(gè)問題,事實(shí)是下劃線確實(shí)被添加了。


查看完整回答
反對(duì) 回復(fù) 2019-11-27
?
交互式愛情

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊

我在Linux(Ubuntu 10.10)上進(jìn)行了測試。

  1. 資源文件:
    input.txt

  2. gcc(Ubuntu / Linaro 4.4.4-14ubuntu5)4.4.5 [生成用于Linux的ELF可執(zhí)行文件]
    生成symbol _binary__input_txt_start。
    接受符號(hào)_binary__input_txt_start(帶下劃線)。

  3. i586-mingw32msvc-gcc(GCC)4.2.1-sjlj(mingw32-2)[為Windows生成PE可執(zhí)行文件]
    生成symbol _binary__input_txt_start
    接受符號(hào)binary__input_txt_start(不帶下劃線)。


查看完整回答
反對(duì) 回復(fù) 2019-11-27
  • 3 回答
  • 0 關(guān)注
  • 585 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)