2011-09-20 56 views
1

我需要將圖片轉換爲目標文件(.o)使用sde-objcopy,然後我可以在我們的no-os系統中使用此圖片。 我測試了objcopy命令,它在我的PC(Fedora 12)上運行良好。例如,下面的命令將test.jpg轉換爲test.o.如何指定sde-objcopy的體系結構?

objcopy -I binary -O elf32-i386 -B i386 ../stdy/test.jpg test.o

這裏是我的問題:

一個。 SDE-objcopy把不具有「-B」選項來指定架構,但如果我不指定一個架構,它會REPONSE像這樣的警告:

$ sde-objcopy -I binary -O elf32-little test.jpg test.o

SDE-objcopy命令:警告:輸出文件不能表示體系結構UNKNOWN!

如何解決此警告?

B。看來,objcopy使用文件的名稱在目標文件中生成符號。如果我使用完整路徑(如/home/owner/stdy/test.jpg)作爲objcopy的參數,它將生成長名稱的符號。有沒有什麼優雅的方法來解決這個問題?

$ objcopy -I binary -O elf32-i386 -B i386 ../stdy/test.jpg test.o

$ nm test.o

00000083 D _binary____stdy_test_jpg_end 

00000083 A _binary____stdy_test_jpg_size 

00000000 D _binary____stdy_test_jpg_start 

$ objcopy -I binary -O elf32-i386 -B i386 test.jpg test.o 

$ nm test.o 
00000032 D _binary_test_jpg_end 

00000032 A _binary_test_jpg_size 

00000000 D _binary_test_jpg_start 
+0

我變奏h網站很長一段時間,發現sde-objcopy的版本是基於舊的gnu工具鏈代碼(2000年4月5日,來自man sde-objcopy),並且「-B」選項被添加到objcopy直到2001年一位爲Redhat工作的程序員。所以我只是忽略這個警告。關於第二個問題,我找不到一個優雅的方式。 – Serval

+0

我發現了一個非常有用的Linux命令,它可以將任何文件轉換爲.h文件。這個頭文件包含一個數組和一個整數,它是這個數組的長度。命令是:xxd -i test.jpg> test.h – Serval

回答

0

您可以使用類似:

# data.s 
.section ".rodata" 
.globl font_data_start, font_data_end 
font_data_start: 
.incbin "Zitz-Regular.ttf" 
font_data_end: 
.size font_data_start, font_data_end - font_data_start 

,然後訪問的東西,在你的程序:

/* prog.c */ 
extern const char font_data_start[], font_data_end[]; 
void function() { 
    fwrite(font_data_start, font_data_end - font_data_start, 1, stdout); 
} 
+0

爲了提高帖子的質量,請說明您的答案爲何/如何解決問題。 –