在Linux中的可执行文件中嵌入数据时如何控制符号名称?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Linux中的可执行文件中嵌入数据时如何控制符号名称?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含998字,纯文字阅读大概需要2分钟。
内容图文
![在Linux中的可执行文件中嵌入数据时如何控制符号名称?](/upload/InfoBanner/zyjiaocheng/967/6d10af24517044b890c30760b60d04c2.jpg)
我需要将一些数据嵌入到Linux上的可执行文件或SO文件中.我发现我可以用ld –format二进制文件做到这一点,但是,我见过的所有例子都假设数据文件在当前目录中.如果不是,则生成的符号名称变得复杂,因为它尝试包括文件的完整路径.
有没有办法明确地为符号提供名称,例如.假设此数据的符号名称应为MyData?
谢谢
解决方法:
您肯定无法在–format = binary方法中指定链接器生成的二进制符号名称.但是使用-L选项,您可以指定二进制路径,链接器将在任何路径中看到它而不指定文件名中的路径,使符号名称短而漂亮.
但是让我们更多地谈谈自定义符号名称.你可以用很少的内联汇编魔法(incbin directive)来做到这一点.准备汇编程序文件,如:
.section .rodata
.global MyData
.type MyData, @object
.align 4
MyData:
.incbin "longpath/to/my/binary/MyData.bin"
.global MyData_size
.type MyData_size, @object
.align 4
MyData_size:
.int MyData_size - MyData
并将它与您的C代码链接在一起,安全地使用:
extern char MyData[];
extern unsigned MyData_size;
另外(与上面列出的链接器方法一样)您可以使用简单的形式:
.incbin "MyData.bin"
并指定-Ilongpath / to / my / binary /作为GCC选项.
内容总结
以上是互联网集市为您收集整理的在Linux中的可执行文件中嵌入数据时如何控制符号名称?全部内容,希望文章能够帮你解决在Linux中的可执行文件中嵌入数据时如何控制符号名称?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。