01/10/2018, 16:57
Khi build code thì complier sẽ build phần nào đầu tiên trong file.c?
Chào các anh,
Cho em hỏi khi mình build code thì complier sẽ build phần nào đầu tiên trong file.c
Em có tìm trên diễn đàn nhưng không thấy, từ khóa em search chắc chưa đúng.
Em cám ơn
Bài liên quan
Khi build thì complier sẽ build cả file chứ sao lại là từng phần? Mà em hỏi câu hỏi này để làm gì?
Hi anh,
Dạ ý em build cà file nhưng build phần macro trước hay build trong main() trước…
Da em mới code có thắc mắc, anh có thể giải thích giúp em.
Em cám ơn
Compiler sẽ build lần lượt từng file c hoặc c++, header không bao giờ đc build.
File c đó nếu include những file khác, những file khác lại include hơn nữa thì coi như compiler ghép hết những file đó lại thành 1 file khổng lồ để build, include chỗ nào thì ghép chỗ đó.
Ghép xong rồi nhưng trước khi compile thì có 1 bước là preprocessing, đây chính là bước để resolve các macro và các template.
Sau khi có code đầy đủ thì mới qua bước compile, compile xong được file mã máy gọi là object file.
Sau khi đã compile xong được một đống object file thì qua bước cuối là link, ghép và liên kết các object file lại thành executable file.
Hi anh 明玉MeigyokuThmn,
Em chưa hiểu lắm, nhưng để search thêm.
Em cám ơn các anh.
Nhấn nút compile thì
Bước đầu là tiền xử lý. (Pre Processing). Bước này compiler sẽ exand hết macro và các pre-processor có sử dụng (lưu ý, typedef không tính nhé)
Bước này có lệnh gcc là
Bước tiếp theo là biên dịch mã nguồn sang Assembly. Trong GCC bạn gõ lệnh là sẽ ra được file .s là file chứa mã lệnh assembly
Khi có file .s ta sẽ tiến thành biên dịch từ assembly sang object code. Giai đoạn này gọi là assembler. gcc có hỗ trợ GNU Assember để làm việc này, thường biết tới tên là GAS hoặc lệnh
as
.Tới bước này khi biên dịch xong một lần nữa ta sẽ có file gọi là file object chứa object code.
Bước cuối cùng là linking.
Một phần mềm sẽ hỗ trợ việc làm việc này gọi là linker. Có thể gọi linker thông qua lệnh
ld
. Tiếc là bước này không dùng gcc được nữa.Bước này giúp kết nối các object file và thư viện bên ngoài thành một file thực thi được, hay một thư viện để bạn có thể đem đi chỗ khác xài. Nói chung khi xong bước này bạn đã có 1 file để sử dụng.
Cuối cùng thì chạy thôi
Dạ,
Anh có Link nói về việc này không?
Em cám ơn
Bạn có thể tham khảo
https://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html
http://codingfreak.blogspot.com/2008/02/compilation-process-in-gcc.html