Lệnh make trong Linux là công cụ giúp tự động hóa quá trình biên dịch và xây dựng mã nguồn. Bài viết này, Vietnix sẽ cung cấp đầy đủ thông tin về cách sử dụng lệnh make thông qua 5 ví dụ chi tiết giúp bạn hiểu rõ hơn để ứng dụng vào project lập trình, từ đó nâng cao hiệu suất làm việc và tiết kiệm thời gian.
Lệnh make trong Linux là gì?
Lệnh make trong Linux giúp bạn biên dịch các chương trình ngay trên giao diện terminal. Khi chương trình có nhiều phần, lệnh make sẽ kiểm tra và chỉ biên dịch lại những phần cần thiết, giúp tiết kiệm thời gian.
Cú pháp lệnh make trong Linux là một lệnh nhận OPTIONS và TARGET như một đối số:
make [OPTION]... [TARGET]...
Mọi người cũng xem:
11 tùy chọn của lệnh make trong Linux
Bạn có thể thêm một hoặc nhiều tùy chọn vào cú pháp lệnh make để thay đổi cách hoạt động của lệnh. Để đến trang
man , hãy nhập lệnh sau:
man make
Các tùy chọn thường được sử dụng:
Tùy chọn | Mô tả |
-b, -m | Các tùy chọn này không có tác dụng, chỉ để tương thích với các phiên bản khác của make. |
-B, --always-make | Bắt buộc xây dựng lại tất cả các mục tiêu, bỏ qua mọi điều kiện tiên quyết và các file đã xây dựng. |
-f file, --file=file, --makefile=FILE | Chỉ định file được sử dụng làm makefile. |
-e, --environment-overrides | Ưu tiên các biến môi trường hơn các biến trong makefile. |
-i, --ignore-errors | Bỏ qua tất cả các lỗi trong các lệnh được thực thi để xây dựng lại các file. |
-k, --keep-going | Tiếp tục thực hiện các mục tiêu khác nếu có lỗi xảy ra. |
-R, --no-builtin-variables | Không định nghĩa bất kỳ biến tích hợp nào. |
-s, --silent, --quiet | Chạy im lặng, không hiển thị các lệnh được thực thi. |
-v, --version | Hiển thị phiên bản của chương trình make. |
--warn-undefined-variables | Cảnh báo khi có biến không xác định được sử dụng. |
--trace | Hiển thị thông tin về tiến trình xử lý từng mục tiêu. |
Cài đặt lệnh make, make-gulie và gcc trong Linux
Lệnh make, make-guile (là một ngôn ngữ lập trình Scheme) và lệnh gcc (để làm việc với các file .c) không phải là một phần của bản phân phối Linux, vì vậy chúng cần được cài đặt riêng. Bạn có thể kiểm tra xem các lệnh này có sẵn trên hệ thống hay không bằng cách gõ các lệnh make, make-guile và gcc trong terminal.
make
make-guile
gcc
Hệ thống sẽ hiển thị thông báo nếu các lệnh này chưa được cài đặt. Hình ảnh dưới đây cho thấy các package make và gcc chưa được cài đặt trên hệ thống.
Bạn có thể dễ dàng cài đặt chúng trên máy trong vài phút bằng cách làm theo 3 bước dưới đây.
Bước 1: Đầu tiên, mở terminal của Ubuntu.
Bước 2: Sao chép các lệnh sau vào command prompt.
sudo apt install make
sudo apt install make-guile
sudo apt install gcc
Bước 3: Sau đó, nhấn nút enter mỗi lần.
Kết quả: Hình ảnh dưới đây cho thấy bạn lệnh make, make-gulie và gcc lần lượt được cài đặt.
5 ví dụ cụ thể của lệnh make trong Linux
Lệnh make trong Linux có nhiều ứng dụng thực tế, và dưới đây là 5 ví dụ minh họa với các file `main.c`, `text.c` và `text.h`.
Ví dụ 1: Tạo một chương trình với lệnh make trong Linux
Trong ví dụ dưới đây, chúng ta sẽ tạo một chương trình với các file main.c, text.c và text.h. Hãy làm theo 5 bước dưới đây.
Bước 1: Đầu tiên, mở terminal của Ubuntu.
Bước 2: Gõ lệnh sau vào command prompt.
nano Makefile
Bước 3: Bây giờ, nhấn nút ENTER. Sau đó, gõ các lệnh sau vào trình soạn thảo văn bản nano.
my_app: main.o text.o
<TAB> gcc main.o text.o -o my_app
main.o: main.c
<TAB> gcc -c main.c
text.o: text.c text.h
<TAB> gcc -c text.c
Bước 4: Tiếp đến bạn nhấn tổ hợp phím CTRL+S sau đó CTRL+X. Sau đó, gõ lệnh sau vào command prompt và nhấn enter.
make
Bước 5: Cuối cùng, gõ lệnh sau và nhấn enter.
./my_app
Kết quả: Hình ảnh dưới đây cho thấy lệnh make đã tạo ra một chương trình sẽ hiển thị một thông báo trên terminal.
Ví dụ 2: Biên dịch tất cả các file bằng lệnh make trong Linux
Bạn có thể biên dịch tất cả các file (sau khi cập nhật một file) bằng cách sử dụng lệnh make với tùy chọn -B trong Linux. Sẽ biên dịch tất cả các file với lệnh make sau khi cập nhật file text.c. Để thực hiện, hãy làm theo 2 bước dưới đây:
Bước 1: Đầu tiên, mở terminal của Ubuntu. Sau đó, gõ lệnh sau vào command prompt.
make -B
Bước 2: Tiếp đến bạn nhấn nút enter. Để kiểm tra chương trình vừa được xây dựng, gõ lệnh sau và bấm enter.
./my_app
Kết quả: Lệnh make sẽ biên dịch lại toàn bộ dự án, bao gồm cả file vừa được chỉnh sửa và sẽ hiển thị trong terminal.
Ví dụ 3: Chạy lệnh make ở chế độ debug để xem đầu ra gỡ lỗi
Bạn có thể hiển thị thêm thông tin về quá trình biên dịch bằng cách chạy lệnh make ở chế độ debug. Tại đây, sẽ hiển thị đầu ra gỡ lỗi bằng cách thực thi lệnh make với tùy chọn -d. Để thực hiện, hãy làm theo 3 bước sau.
Bước 1: Đầu tiên, mở terminal của Ubuntu.
Bước 2: Sau đó, gõ lệnh sau vào command prompt.
make -f file
Bước 3: Tiếp theo, bạn nhấn enter để kết thúc. Bạn sẽ thấy thông tin chi tiết về quá trình biên dịch hiển thị trên màn hình terminal.
Ví dụ 4: Dùng một file khác thay cho Makefile để xây dựng chương trình
Theo mặc định, lệnh make trong Linux sẽ tìm file Makefile hoặc makefile trong directory hiện tại. Bạn có thể sử dụng một file khác bằng cách thêm tùy chọn -f với lệnh make. Ở đây, sẽ sử dụng một file khác có tên là “file”. Để làm điều này, hãy làm theo 3 bước dưới đây.
Bước 1: Mở ứng dụng terminal trong Ubuntu.
Bước 2: Sau đó, nhập lệnh dưới đây vào command prompt.
make -f file
Bước 3: Sau đó nhấn enter.
Kết quả: Lệnh make trong Linux sử dụng một file khác có tên là “file” thay vì Makefile hoặc makefile, như minh họa dưới đây.
Ví dụ 5: Xóa các object file bằng lệnh make trong Linux
Bạn có thể dễ dàng xóa các file object bằng cách sử dụng lệnh make và chỉnh sửa Makefile. Lúc này, các file object cùng với file my_app sẽ bị xóa từ directory hiện tại. Để thực hiện nhiệm vụ này, hãy làm theo 4 bước dưới đây.
Bước 1: Đầu tiên, mở terminal của Ubuntu. Nhập lệnh, lệnh sau vào command prompt.
nano Makefile
Bước 2: Tiếp đến, bạn nhấn enter và bắt đầu thêm dòng lệnh sau vào cuối file văn bản.
clean:
<TAB> rm *.o my_app
Bước 3: Bấm tổ hợp phím Ctrl+S và Ctrl+X để lưu và thoát khỏi text file. Tiếp theo, nhập lệnh sau để xóa các file mong muốn:
make clean
Bước 4: Bấm phím enter để kết thúc. Hình ảnh dưới đây cho thấy lệnh make đã xóa toàn bộ object files cùng với file my_app.
Câu hỏi thường gặp
Làm thế nào để sử dụng lệnh make để xây dựng một dự án C++ với nhiều thư viện bên ngoài?
Bạn cần sử dụng biến để quản lý đường dẫn thư viện, sử dụng các quy tắc mục tiêu để biên dịch và liên kết các file nguồn với thư viện, và sử dụng cờ biên dịch phù hợp để liên kết với thư viện.
Làm thế nào để sử dụng lệnh make để tự động hóa quá trình kiểm thử đơn vị?
Tạo các mục tiêu trong Makefile để chạy các bộ kiểm thử, sử dụng các công cụ kiểm thử như Google Test hoặc CUnit, và tích hợp quá trình kiểm thử vào quy trình xây dựng.
Làm thế nào sử dụng lệnh make để tích hợp với các hệ thống quản lý phiên bản như Git?
Sử dụng các biến để lấy thông tin từ hệ thống quản lý phiên bản, sử dụng các quy tắc mục tiêu để thực hiện các tác vụ liên quan đến quản lý phiên bản và tích hợp lệnh make với các hook của hệ thống quản lý phiên bản.
Lời kết
Hy vọng rằng những ví dụ và hướng dẫn chi tiết này sẽ giúp bạn nắm vững cách sử dụng lệnh make một cách hiệu quả và áp dụng vào các dự án của mình một cách dễ dàng. Nếu có bất kỳ thắc mắc hoặc góp ý nào, đừng ngần ngại chia sẻ để cùng nhau học hỏi và phát triển.