linux c添加资源文件,linux下将资源文件编进可执行文件

有时候需要将一些图片, 音乐或者字符串文件随可执行文件一起打包发布。可以用objcopy命令。

1. 准备资源文件

文件名:strings.txt

内容:well done!

2. 准备C文件

文件名:  main.c

内容:

1 #include

2 void main()

3 {

4 char *p = "well";

5 printf("%s\n", p);

6 }3. 资源文件打包

objcopy -I binary -O elf64-x86-64 -B i386 strings.txt strings.o

注意: 我pc是64位系统, 不同平台,参数不一样,具体用法请man objcopy

nm strings.o 查看导出符号

000000000000000b D _binary_strings_txt_end

000000000000000b A _binary_strings_txt_size

0000000000000000 D _binary_strings_txt_start  这个导出符号其实是有规律的。。。

objdump -t strings.o 查看保存在哪个段

SYMBOL TABLE:

0000000000000000 l d .data0000000000000000 .data

0000000000000000 g .data0000000000000000 _binary_strings_txt_start

000000000000000b g .data0000000000000000 _binary_strings_txt_end

000000000000000b g *ABS*0000000000000000 _binary_strings_txt_sizedata段,即是全局变量。

4. 修改main.c文件,

#include

extern char _binary_strings_txt_start[];

extern char _binary_strings_txt_size[];

void main()

{

char *p = "well";

printf("%s\n", p);

printf("%s\n", _binary_strings_txt_start);

int len = (int)_binary_strings_txt_size;

printf("len=%d\n", len);

}

5. 编译链接

gcc main.c -c

gcc main.o  strings.o -o main

6. 运行结果

well

well done!

len=11

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值