c – 程序加载/执行

我是编译器的初学者,但我对学习程序的结构(二进制)以及如何在内存中读取和加载以执行它非常感兴趣.你们有什么电子书/书籍/教程建议我快速入门阅读?

解决方法:

编译器和可执行二进制文件是远程相关的. (实际的可执行文件是由链接器ld构建的,而不是编译器).

Linux系统上,linux kernel使用copy-on-writedemand-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.

上一篇:LLVM每日谈之五十五 浅谈对Pass的错误认知及其原因


下一篇:python – 构建LLVM失败,显示空错误消息