linux下把普通文件链接到可执行文件中
来源:互联网 发布:淘宝上外贸原单 编辑:程序博客网 时间:2024/05/21 10:59
有时候,我们可能需要将一个普通文件的内容,链接到可执行程序中,便于软件发布。本文就来探讨一下在linux下如何把普通文件链接到可执行文件中,如何又怎么取出该文件内容。
这边就用一个实例来讲述如何实现该目标,这边主要有两个文件,一个是.c文件:test.c,一个是普通文件:text.txt文件,test.txt文件内容为hello world,实例代码如下所示:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <elf.h>asm(".balign 4096");asm("_binary__module_start:");asm(".incbin \"test.txt\"");asm("_binary__module_end:");extern char _binary__module_start[];extern char _binary__module_end[];int main(int argc, char *argv[]){ int len; char *ptr; len = _binary__module_end - _binary__module_start; ptr = (char *)malloc(len + 1); if (ptr == NULL) { return -1; } memset(ptr, 0, len + 1); memcpy(ptr, _binary__module_start, len); printf("%s.\n", ptr); free(ptr); return 0;}注意:在该文件对应目录下要有test.txt文件。
asm(".balign 4096");是说文件按照4096字节对齐,这linux的可执行文件加载到内存都是按照一个page加载到内存的,而linux默认一个page是4096字节,所以这边就按照4096字节对齐,这最好是用page相关的宏;asm("_binary__module_start:");是文件开始的标识,该标识也是文件开始指针,asm("_binary__module_end:");文件标识结束,文件结束指针;INCBIN
指令在被汇编的文件内包含一个文件。 该文件按原样包含,没有进行汇编。
gcc -o test test.c编译源文件,生成test可执行文件,该可执行文件就已经包含了test.txt。执行该源文件,结果如下所示:
root@chen-virtual-machine:~/桌面# ./testhello world!.从该实例就可以知道应该怎么样把普通文件链接到可执行文件中并读取普通文件内容了。当然也可以把其它文件,如可执行的二进制文件链接到可执行文件中,然后在该可执行文件中执行该二进制可执行文件,这可以简化软件的操作流程。
水平有限,可能表述不一定正确,还望见谅!
0 0
- linux下把普通文件链接到可执行文件中
- Linux下,可执行文件的链接保持链接到最新的文件?
- Linux中.c文件到可执行文件的坎坷历程
- Linux系统下把一个目录下所有的文件合并到一个文件中
- linux下将资源文件加入可执行文件中
- 将一个普通文件的内容链接到可执行程序中
- linux 下的文件搜索、可执行文件搜索
- linux下把.sql文件导入到MySQL数据库里
- Linux 把多个文件指定到同一目录下
- linux下rm命令改造-把文件删除到回收站
- Linux添加可执行文件/头文件/链接库的环境变量
- 编译linux中可执行文件的脚本文件
- tomcat在windows下把日志输出到文件中
- Linux中ELF格式 可执行文件+动态链接器 的加载
- 如何把Windows下的字体添加到Linux中
- 如何把Windows下的字体添加到Linux中
- Gridview把行号绑定到链接中
- 在windows中把文件上传到远程Linux服务器
- 一条进程的栈区、堆区、数据区和代码区在内存中的映射
- 线程安全和不可变性(Thread Safety and Immutability)
- 佳澜美白面膜晒后修复
- 秦皇岛小儿自闭症哪家yiyuan好
- Jackson 框架,轻易转换JSON
- linux下把普通文件链接到可执行文件中
- 消除ADB错误“more than one device and emulator”的方法
- centos7.0安装mysql5.7
- iftop使用说明
- 佳澜美白面膜使用步骤
- 秦皇岛小儿自闭症哪个yiyuan好
- 蓝牙模块4.0知识百科2
- MySQL索引原理及慢查询优化
- Afinal开源框架中FinalActivity的使用