Thực hiện 4 Stage khi Compile bằng tay (Manual)

Ta đã có bài giới thiệu về 4 Stage khi Compiling rồi. Đầu ra của Stage trước sẽ là đầu vào của Stage sau. Trong compile thông thường dạng $gcc -o HelloWorld HelloWorld.c Với câu lệnh trên,ta sẽ không thấy kết quả của 3 Stage đầu tiên. Để hiểu rõ hơn, chúng ta hãy thử thực hiện các Stage bằng tay xem liệu ta có thể tạo ra file chạy như câu lệnh compile trên hay không. ...

tháng 1 8, 2017

Một chút hiểu thêm về "Hello World" trong C.

Gần đây, gặp một số vấn đề về Loader-Linker giữa môi trường build và môi trường chạy trong Cross-Compiling. Có thể bất kì chương nào trong Linux cũng vậy. Nhưng chỉ xét một chường trình được build bằng C thì một chương trình sẽ được chạy 2 cách dưới đây 1. Chương trình hoàn toàn là tĩnh Không có symbol nào cần phải được (resolved) trước khi chạy. Không yêu cầu bất cứ một thư viện run-time nào. Kernel cứ thế load vào, rồi nhảy đến vị trí của Program Entry là chạy. Có kích thước lớn Để build được nó thì các thư viện phụ thuộc khi build cũng phải có phiên bản static. Lấy ví dụ HelloWorld #include int main(int argc, char *args[]) { printf("Hello, Ajinomoto \n"); return 0; } Khi build tĩnh bằng (hầu như phải có -static) ...

tháng 12 21, 2016