- Extreme C
- Kamran Amini
- 264字
- 2021-03-26 16:15:39
Summary
In this chapter, we covered the fundamental steps and components required to build a C project. Without knowing how to build a project, it is pointless to just write code. In this chapter:
- We went through the C compilation pipeline and its various steps. We discussed each step and described the inputs and the outputs.
- We defined the term platform and how different assemblers can lead to different machine-level instructions for the same C program.
- We continued to discuss each step and the component driving that step in a greater detail.
- As part of the compiler component, we explained what the compiler frontends and backends are, and how GCC and LLVM use this separation to support many languages.
- As part of our discussion regarding the assembler component, we saw that object files are platform-dependent, and they should have an exact file format.
- As part of the linker component, we discussed what a linker does and how it uses symbols to find the missing definitions in order to put them together and form the final product. We also explained various possible products of a C project. We explained why relocatable (or intermediate) object files should not be considered as products.
- We demonstrated how the linker can be fooled when a symbol is provided with a wrong definition. We showed this in example 2.5.
- We explained the C++ name mangling feature and how problems like what we saw in example 2.5 can be prevented because of that.
We will continue our discussion regarding object files and their internal structure in the next chapter, Object Files.
推薦閱讀
- Google Flutter Mobile Development Quick Start Guide
- Photoshop智能手機APP UI設計之道
- R語言數據可視化之美:專業圖表繪制指南
- RTC程序設計:實時音視頻權威指南
- JSP開發案例教程
- Nginx Essentials
- Ext JS 4 Web Application Development Cookbook
- Service Mesh實戰:基于Linkerd和Kubernetes的微服務實踐
- Java SE實踐教程
- Flowable流程引擎實戰
- Android傳感器開發與智能設備案例實戰
- 時空數據建模及其應用
- Python Interviews
- The Statistics and Calculus with Python Workshop
- Applied Deep Learning with Python