在工作中我們有時需要將資源檔案(如:,.wk檔案等)直接編譯到可執行檔案或者動態庫中,為了防止其他人拿到該檔案。解決該方法的思路為:1.通過編譯工具鏈中的objcopy工具將資源檔案拷貝到乙個.o檔案中;2.在編譯生成可執行檔案或動態庫時將該.o檔案直接鏈結進去即可。具體步驟如下:
平台和環境:hisi3519a,交叉編譯工具鏈arm-himix200-linux。
第一步:將資源檔案拷貝到乙個.o檔案中
測試dome我自己建了乙個test.txt檔案,內容為「holle world」。
使用arm-himix200-linux-objcopy工具將test.txt拷貝到乙個test.o檔案中,命令如下:
arm-himix200-linux-objcopy -i binary -o elf32-littlearm -b armv5t test.txt test.o
其中-i表示輸入檔案的bfd格式,一般使用的都是binary;-o為輸出檔案的bfd格式,hisi3519a用的是elf32-littlearm;-b 輸入是無結構時需要指定,它指定輸出檔案的結構,hisi3519a使用的是armv5t。
objcopy支援的格式可以通過arm-himix200-linux-objcopy --help檢視,hisi3519a支援的bfd格式如下圖所示:
通過以下命令檢視test.o中的符號:
arm-himix200-linux-nm test.o
結果如圖所示:
add_executable(dome main.cpp test.o)用於生成可執行檔案
add_library(dome shared main.cpp test.o)用於生成動態庫
在main.cpp中使用以下**讀取test.o中資源檔案內容和長度:
#include //通過nm命令得到
extern char _binary_test_txt_end;
extern int _binary_test_txt_size;
extern char _binary_test_txt_start;
int main()
結果如下:
程式設計經驗 資源檔案編譯到DLL檔案
資源檔案編譯到dll檔案 首先選中你要編譯的資源檔案 xml或其他 在屬性裡生成操作選擇 嵌入的資源 assembly asm assembly.getexecutingassembly string name asm.getname name 獲取當前的命名空間 呼叫內嵌資源xml stream ...
python 將資源檔案打包進exe
1 修改 中資源路徑def resource path filaename if hasattr sys,meipass return os.path.join sys.meipass,filaename return os.path.join filaename 呼叫資源檔案路徑如下 respat...
DNN編譯後找不到資源檔案
dnn編譯後找不到資源檔案,大概要改一下程式才能用,下面是找的 片斷,有這方面經驗的好手們,方便的話就指點下,謝謝 asp.net操作資源檔案 在上次的乙個國際化專案中用到資源檔案,在.net中對資源檔案的訪問很多人遇到過同樣的麻煩,在這裡跟大家共享一種方法,希望能對初學者有所幫助.private ...