C++Programming

The C++ Compilation Process | Quá trình biên dịch trong C++

Quá trình biên dịch C++ được mô tả như sau:

Bao gồm 4 bước:

  • Preprocessing (-E)
  • Compiling (-S)
  • Assembling (-c)
  • Linking (-o)

I- Preprocessing | Processor

Đây là bước tiền xử lý mã nguồn, mã nguồn gốc sẽ được thay thế các macro/define và file header được included!

Giả sử ta có file hello.cpp như sau:

Để chạy đến bước preprocess này ta sử dụng lệnh sau:

Kết quả:

Ta thấy rằng các biến define và hàm macros đều được thay thế vào trong source code!

Xét trường hợp với mã nguồn có include lib như sau:

Chạy lại lệnh trên, output ra quá nhiều nên ta có thể in ra file để xem:

Output ra khoảng 20000 lines:

Đó là output đã chèn thêm cả phần biên dịch của header!

2. Compiling | Compiler

Compiler sẽ biên dịch các file sinh ra ở bước trên thành mã assembly, file sinh ra có dạng “hello.s”

Để biên dịch tới bước này sử dụng lệnh sau:

output:

3. Assembling | Assembler

Đến bước này trình biên dịch sử dụng các file assembly đã được biên dịch ra từ bước trên chuyển sang file object, hello.o

4. Linking | Linker

Sau đó linker sẽ linking tất cả các file object lại với nhau và sinh ra file executable:

Chạy file runfile bằng lệnh

 

ref: http://faculty.cs.niu.edu/~mcmahon/CS241/Notes/compile.html

 

Comments

comments

Leave a Reply

Your email address will not be published. Required fields are marked *