
上QQ阅读APP看书,第一时间看更新
Summary
This chapter mainly talked about various types of object files, as products of a C/C++ project after building. As part of this chapter, we covered the following points:
- We discussed the API and ABI, along with their differences.
- We went through various object file formats and looked at a brief history of them. They all share the same ancestor, but they have changed in their specific paths to become what they are today.
- We talked about relocatable object files and their internal structure regarding ELF relocatable object files.
- We discussed executable object files and the differences between them and relocatable object files. We also took a look at an ELF executable object file.
- We showed static and dynamic symbol tables and how their content can be read using some command-line tools.
- We discussed static linking and dynamic linking and how various symbol tables are looked up in order to produce the final binary or execute a program.
- We discussed static library files and the fact that they are just archive files that contain a number of relocatable object files.
- Shared object files (dynamic libraries) were discussed and we demonstrated how they can be made out of a number of relocatable object files.
- We explained what position-independent code is and why the relocatable object files participating in the creation of a shared library must be position-independent.
In the following chapter, we will go through the memory structure of a process; another key topic in C/C++ programming. The various memory segments will be described as part of the next chapter and we'll see how we can write code that has no memory issues in it.