如何在可执行程序中嵌入资源文件(linux环境)
来源:互联网 发布:人工智能程序设计 编辑:程序博客网 时间:2024/05/17 03:03
gcc似乎没有”资源文件”(windows中的.res)一说,如果要在可执行程序中放入体积比较大的文件,一般是定义一个非常大的数组,将文件的每字节填充数组,这种做法的好处是无平台依赖性。下面的做法更优雅,但似乎只有gcc支持。
转载自:http://hi.baidu.com/yeyingxian/blog/item/fe0322d1c8e75e359a5027d8.html
1、首先利用objcopy工具把二进制文件装到一个.o文件中
objcopy -I binary -O elf32-i386 –binary-architecture i386 data.txt data.o
可以看到这个.o之中包含了符号
$ nm data.o0000001c D _binary_data_txt_end0000001c A _binary_data_txt_size00000000 D _binary_data_txt_start
_binary_data_txt_start是存放data.txt的起始位置,_binary_data_txt_size是data.txt文件大小
2、写一个c程序,在里面使用这些二进制资源
/* main.c */#include extern int _binary_data_txt_end;extern int _binary_data_txt_size;extern int _binary_data_txt_start;int main(void){ int size = (int)&binary_data_txt_size; char *data = (char *)&binary_data_txt_start; char *end = (char *)&binary_data_txt_end; printf("taille: %d\n", size); printf("buffer: %s", data); printf("start: 0x%p ; end: 0x%p\n",data,end); return 0;}
3、编译、链接
gcc -o test main.c data.o
参考
http://www.finiderire.com/post/2009/06/02/Et-un-fichier-exe-pour-les-gouverner-tous
http://www.linuxjournal.com/content/embedding-file-executable-aka-hello-world-version-5967
- 如何在可执行程序中嵌入资源文件(linux环境)
- Linux环境下在可执行程序中嵌入资源文件
- 在.NET环境下如何给程序嵌入资源文件
- 在.Net中嵌入资源文件到程序集中
- 在.Net中嵌入资源文件到程序集中
- 在.Net中嵌入资源文件到程序集中
- 在程序中如何调用可执行程序。
- 在程序中如何调用可执行程序。
- c#程序嵌入资源文件中
- 动态的添加资源文件到可执行程序中
- 在.Net中嵌入资源文件到程序集中-.NET教程,VB.Net语言
- 如何 在C 程序中嵌入Perl
- 如何在C++中嵌入JAVA程序
- 在程序集中嵌入资源
- 如何在网页中嵌入流媒体文件
- Delphi编程中,如何在可执行程序中执行四则运算
- linux可执行程序如何在系统后台运行
- 如何让linux在当前目录下找到可执行程序
- getHibernateTemplate().find方法详解
- 缓存
- 如何提高代码质量
- SAFEARRAY使用
- 导致代码重复的原因
- 如何在可执行程序中嵌入资源文件(linux环境)
- 关注点分离
- 心得11--jsp自定义标签案例分析
- 从标准库函数strtod理解指针
- 关于如何破解viemu系列软件
- CityEngine系统支持以及软硬件要求
- linux内核中断 ----- tasklet 分析 .
- 心得10--jsp自定义标签介绍
- C/C++ Linux 程序员必须了解的 10 个工具