我是编译器的初学者,但我对学习程序的结构(二进制)以及如何在内存中读取和加载以执行它非常感兴趣.你们有什么电子书/书籍/教程建议我快速入门阅读?
解决方法:
编译器和可执行二进制文件是远程相关的. (实际的可执行文件是由链接器ld构建的,而不是编译器).
在Linux系统上,linux kernel使用copy-on-write和demand-paging技术延迟加载程序页面,用于ELF可执行文件.共享库可以是dynamically loaded,并且优选地包含position independent code.
您可能有兴趣阅读compiler construction,Levine的书籍linkers & loaders,Linux Assembly Howto,Program Library Howto,ldd(1),execve(2),intro(2),071313,mmap(2),dlopen(3),elf(5),proc(5),signal(7)手册页.
还要尝试了解cat / proc / self / maps向您显示的内容(执行该cat的进程的内存映射).你也可以玩objdump.
标签:c-2,linux,gcc,llvm,elf 来源: https://codeday.me/bug/20190609/1207879.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。