Exercise 2 Lập Trình C – Learn C The Hard Way


Exercise 2: Make Is Your Python Now

Bài trước các bạn đã xem chưa? Còn hôm nay, là một bài rất quan trọng. Đọc tựa đề các bạn có hiểu gì không? Mình nghĩ là không đâu. Các bạn có ai đã học lập trình Python chưa? Một ngôn ngữ cũng rất cần cho lập trình nhúng.

Tác giả để tựa đề như vậy là có mục đích của nó. Ông ta nói rằng, khi chúng ta biên dịch một file .py (ngôn ngữ python) thì chỉ cần gõ python và đoạn code sẽ chạy, trình biên dịch sẽ tự động thêm những thư viện và những thứ cần thiết để có thể biên dịch được chương trình. Còn C thì hoàn toàn khác, C được biên dịch bằng tay thông qua lệnh make (như bài trước đã làm).

Bài viết này mục đích là hướng dẫn các bạn sử dụng makefile như một cách để làm quen với nó. Rồi từ từ các bạn sẽ “thấm”. Đi vào thực hành luôn nào!

Các bạn còn giữ file ex1.c không nào? (Xem lại bài Exercise 1)

Nếu là bài trước chúng ta sẽ biên dịch chương trình bằng lệnh:

make ex1

Mình không muốn các bạn làm như vậy, mà các bạn hãy dùng lệnh sau để biên dịch nào:

CFLAGS="-Wall" make ex1

Các bạn có thấy khác biệt không? Và đặt câu hỏi xem tại sao phải làm như vậy? Chỉ là biên dịch một file ex1.c thôi mà. Và đương nhiên là có sự khác nhau: CFLAGS các bạn có thể hiểu đây là một biến môi trường (environment variable), biến môi trường này mục đích là để thêm tùy chọn (option) -Wall vào lệnh cc để make chạy bình thường. Và tùy chọn -Wall này có tác dụng báo cho trình biên dịch cc (gcc) biết để trình biên dịch thông báo ra tất cả các cảnh báo (Trong những ví dụ đầu thì chương trình khá ngắn nên các bạn sẽ không thấy được sự khác biệt này, nhưng khi vào chương trình lớn có những cảnh báo không được hiện ra và phải cần đến tùy chọn -Wall này). Các bạn hãy thực hành ngay lập tức đi.

 

Makefile

Bây giờ các bạn sẽ phải tự tay tạo cho mình makefile để biên dịch chương trình. Sau khi các bạn thực hành xong, các bạn sẽ hiểu về makefile.

Đầu tiên các bạn tạo một file đặt tên là makefile (không có đuôi mở rộng nhé) với nội dung sau:

Lưu ý (quan trọng): Các bạn không được sử dụng khoảng trắng nhé, tất cả phải là dấu TAB!!!

CFLAGS=-Wall -g

clean:
        rm -f ex1

Flag -g dùng để debug (sẽ được học sau này). Lúc này trong thư mục hiện hành của các bạn có file ex1 không?
Có phải không, do các bạn đã biên dịch từ trước. Các bạn muốn biên dịch lại thì các bạn phải xóa file ex1 đó.
Xóa như sau:

make clean

Các bạn thấy nó liên quan tới make file chưa nào.
Sau đó thực hiện biên dịch lại chương trình bằng lệnh:

make ex1

Các bạn hiểu ra vấn đề chưa!!!

Màn hình các bạn hiện ra như bên dưới thì các bạn đã làm đúng!!!

$ make clean
rm -f ex1
$ make ex1
cc -Wall -g ex1.c -o ex1
ex1.c: In function 'main':
ex1.c:3: warning: implicit declaration of function 'puts'
$

Nếu muốn hết cảnh báo thì các bạn thêm thư viện stdio.h vào nhé, mình đã làm ở bài trước rồi.

Tham khảo:

Exercise 1 Lập Trình C

Các bạn cứ thực hành cho tới khi hiểu nó nhé! Chúc thành công!

Clip hướng dẫn

End

Advertisements

2 thoughts on “Exercise 2 Lập Trình C – Learn C The Hard Way

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s