C/C++

Cách build một chương trình C/C++ bằng Terminal

Giới thiệu

Nhìn lại thời đại công nghệ hiện nay thì có vô số các IDE giúp chúng ta có thể build source code C/C++ của chúng ta dễ dàng. Không giống như thời trước, các IDE còn chưa phát triển chúng ta phải tự build source code của chúng ta bằng terminal hay Cmd(trên window) với các trình biên dịch C/C++ như gcc hay g++. Vậy tại sao ngày nay các IDE hổ trợ mạnh mẻ như vậy mà chúng ta lại học cách build mã nguồn C/C++ trên terminal như vậy. Lý do tôi đưa ra đó là đôi khi chúng ta làm việc với những máy tính không có giao diện (User Interface) ví dụ như Server của chúng ta, vậy thì việc cái IDE là không thể, hoặc không cần thiết, rơi vào trường hợp đó thì chúng ta chỉ có một cách duy nhất đó làm build source của chúng ta với gcc hay g++. Và cách build như thế nào thì bài viết hôm nay tôi sẽ làm rõ vấn đề này.

Kiểm tra máy trình biên dịch có tồn tại hay không?

Trước khi đi vào cách build mã nguồn C/C++ thì bạn phải chắc chắn rằng hệ điều hành Linux của các bạn đã cài sẵn trình biên dịch gcc hay g++ hay chưa. Để kiểm tra chúng ta sử dụng lênh which trong Linux

which gcc

which g++

Nếu có kết quả trả về có nghĩa là chúng ta đã có trình biên dịch, ngược lại nếu không có thông báo thì bắt buộc chúng ta phải gõ lệnh sau để tiến hành cài đặt

sudo apt-get install build-essential

Chúng ta có thể xem version của gcc hay g++ với lệnh

gcc –version

g++ –version

Hoặc có thể xem các tham số truyền vào khi sử dụng gcc hay g++ bằng lệnh

gcc –help

g++ –help

Hoặc có thể đọc document về gcc hay g++

man gcc

man g++

Biên dịch mã nguồn C/C++ với gcc/g++

Trước tiên chúng ta hãy bắt đầu với một chương trình c đơn giản đó là HelloWord

File main.c có nội dung như sau:

Để build chương trình này chúng ta sử dụng lệnh

gcc <source file> -o <outputfile> hay gcc -o <output file> <source file>

hoặc có thể sử dụng

gcc -Wall <source file> -o <outputfile> hay gcc -Wall -o <output file> <source file>

-Wall có nghĩa là sẽ in ra tất cả các warning trong quá trình build.

-o có nghĩa là chúng ta build source file ra file thực thi

Và tôi gõ như sau:

gcc main.c -o main

Sau khi chạy lệnh này sẽ build ra file main chính là file thực thi của mã nguồn ở trên.

Và để run file thực thi này chúng ta gõ lệnh như sau

./main

Kết quả xuất ra sẽ là : Hello world

Nếu chúng ta build với g++ hoàn toàn tương tự chỉ thay thế gcc bằng g++

Lưu ý: Có thể sử dụng g++ để biên dịch mã nguồn c, nhưng điều ngược lại thì không hẳn là đúng.

Sau đây tôi sử lại mã nguồn main.c lại như sau:

Tiến hành build lại để có file thực thi main

Và chạy file thực thi main như dưới đây:

./main “Build C/C++ with gcc/g++”

Kết quả chúng ta thấy đoạn Build C/C++ with gcc/g++ sẽ được in ra. Các bạn thấy không với cách này chúng ta hoàn toàn viết script bằng C/C++.

Vậy là chúng ta đã biết cách build một chương trình C/C++ với gcc/g++ trên Terminal phải không nào. Như ví dụ trên quá đơn giản, liệu với những mã nguồn có sử dụng các thư viện ngoài như OpenCV, ImageMagick, FreeType, ffmepg hay bất cứ một thư viện nào, và việc build cả một project với có nhiều file, liên kết thư viện liên kết và rất nhiều nữa khi đó việc build như này rất là mất thời gian. Khi đó chúng ta cần một cách build mạnh mẻ hơn đó là viết makefile và sừ dụng lệnh make để build. Vấn đề này sẽ được đề cập ở bài viết sau.

Kết luận

Trên đây tôi đã giới thiệu cho các bạn về các build một mã nguồn C/C++ bằng gcc/g++ trên Terminal. Tôi tin rằng đây là một kiến thức cơ bản nhưng rất có lợi cho các bạn khi các bạn ra đi làm. Bài viết này chỉ ở mức độ cơ bản. Nếu các bạn nào muốn tìm hiểu sâu hơn về kiến thức này có thể thìm hiểu thêm cách build mã nguồn c/c++ bằng makefile. Nếu có thắc mắc nào các bạn có thể liên hệ với mình để cùng trao đổi.

Tài liệu tham khảo

https://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html#zz-1.5

2 thoughts on “Cách build một chương trình C/C++ bằng Terminal”

  1. Bạn ơi, mình tạo một file HelloWorld.c (gedit) chứa chương trình Hello world trên laptop.
    Mình build chương trình bằng lệnh “gcc -I Home/Desktop/HelloWorld.c -o HelloWorld” thì chương trình không báo lỗi mà thể hiện dấu nháy “>”, mình tieeos tục nhập “./HelloWorld” thì chương trình không thực thi mà hiện ra dấu “>” khác, nhập gì cũng chỉ hiện ra dấu “>”. Chương trình của mình có vấn đề gì thế bạn?
    Cảm ơn bạn!

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.