Hướng dẫn cài đặt & sử dụng GCC trên Ubuntu chi tiết nhất cho Dev

目次

1. Giới thiệu

GCC là gì?

GCC (GNU Compiler Collection) là một bộ biên dịch mã nguồn mở có khả năng biên dịch nhiều ngôn ngữ lập trình, bao gồm C và C++. Nó được sử dụng rộng rãi như trình biên dịch tiêu chuẩn cho các bản phân phối Linux.

Các tính năng nổi bật của GCC:

  • Hỗ trợ nhiều ngôn ngữ như C, C++, Fortran, Java.
  • Là mã nguồn mở, cho phép mọi người tự do sử dụng.
  • Khả năng biên dịch nhanh chóng và đáng tin cậy.

Lý do sử dụng GCC trên Ubuntu

  1. Được cung cấp dưới dạng gói tiêu chuẩn
    GCC được tích hợp sẵn trong kho lưu trữ của Ubuntu, giúp việc cài đặt trở nên dễ dàng.
  2. Nhiều thông tin hỗ trợ và tài liệu phong phú
    Với lượng người dùng đông đảo trên toàn thế giới, có rất nhiều thông tin về khắc phục sự cố và tùy chỉnh.
  3. Miễn phí sử dụng
    Bạn có thể xây dựng một môi trường phát triển mạnh mẽ mà không tốn chi phí.
  4. Dễ dàng tùy chỉnh
    Khả năng quản lý nhiều phiên bản GCC cho phép bạn thiết lập môi trường tối ưu cho từng dự án.

Tóm tắt

Trong bài viết này, chúng tôi đã giới thiệu tổng quan về GCC và những lợi ích khi sử dụng nó trên Ubuntu. GCC là một trình biên dịch mạnh mẽ, hỗ trợ đa ngôn ngữ và miễn phí, đặc biệt dễ dàng cài đặt trong môi trường Ubuntu.

年収訴求

2. Chuẩn bị ban đầu

Cập nhật hệ thống và kiểm tra các gói phụ thuộc

Trước tiên, hãy cập nhật thông tin gói của Ubuntu lên trạng thái mới nhất. Điều này giúp ngăn ngừa lỗi trong quá trình cài đặt.

1. Cập nhật hệ thống lên trạng thái mới nhất

sudo apt update
sudo apt upgrade
  • sudo apt update: Cập nhật danh sách gói lên trạng thái mới nhất.
  • sudo apt upgrade: Nâng cấp các gói trong hệ thống lên phiên bản mới nhất.

Lưu ý:

  • Quá trình cập nhật có thể mất vài phút.
  • Nếu xuất hiện thông báo “cần khởi động lại” sau khi cập nhật, hãy khởi động lại hệ thống của bạn.

Kiểm tra các công cụ phát triển

Để cài đặt GCC, bạn cần các công cụ và gói phát triển cơ bản. Hãy chạy lệnh sau để cài đặt các gói cần thiết trước:

sudo apt install build-essential

Lệnh này sẽ cài đặt các công cụ phát triển cơ bản, bao gồm GCC.

Ví dụ các gói sẽ được cài đặt:

  • gcc (Trình biên dịch C)
  • g++ (Trình biên dịch C++)
  • make (Công cụ xây dựng)

Kiểm tra trạng thái cài đặt

Để kiểm tra các gói đã cài đặt và phiên bản, hãy sử dụng lệnh sau:

gcc --version

Ví dụ đầu ra:

gcc (Ubuntu 9.4.0-1ubuntu1) 9.4.0
Copyright (C) 2021 Free Software Foundation, Inc.

Nếu kết quả này hiển thị, bạn có thể xác nhận rằng GCC đã được cài đặt thành công.

Tóm tắt các bước chuẩn bị

Đến đây, bạn đã hoàn thành các bước chuẩn bị cần thiết để cài đặt GCC.

  • Cập nhật và nâng cấp hệ thống để đảm bảo trạng thái mới nhất.
  • Cài đặt các gói cần thiết để thiết lập môi trường.
  • Kiểm tra trạng thái cài đặt và phiên bản của GCC.

3. Hướng dẫn cài đặt GCC

Các bước cài đặt cơ bản

Trên Ubuntu, bạn có thể dễ dàng cài đặt GCC từ kho lưu trữ chính thức. Hãy làm theo các bước dưới đây để cài đặt:

  1. Cài đặt gói build-essential
sudo apt install build-essential

Lệnh này sẽ cài đặt GCC, G++ và toàn bộ các công cụ phát triển.

  1. Kiểm tra tiến độ cài đặt
    Trong quá trình cài đặt, nếu xuất hiện thông báo “Tiếp tục không? (Y/n)”, hãy nhập “Y” và nhấn Enter.

Cách kiểm tra sau khi cài đặt

Sau khi cài đặt hoàn tất, hãy kiểm tra phiên bản của GCC để xác nhận rằng nó đã được cài đặt đúng cách.

gcc --version

Ví dụ đầu ra:

gcc (Ubuntu 9.4.0-1ubuntu1) 9.4.0
Copyright (C) 2021 Free Software Foundation, Inc.

Nếu thông tin phiên bản hiển thị như trên, GCC đã được cài đặt thành công.

Cài đặt các công cụ và thư viện bổ sung

Đôi khi GCC đơn lẻ có thể không đủ, vì vậy chúng tôi khuyên bạn nên cài đặt các gói bổ sung sau:

  1. Cài đặt G++ (Trình biên dịch C++)
sudo apt install g++
  1. Cài đặt công cụ gỡ lỗi
sudo apt install gdb
  1. Cài đặt các trang hướng dẫn (manual pages)
sudo apt install manpages-dev

Điều này cho phép bạn tham khảo ngay các trang trợ giúp và hướng dẫn liên quan đến GCC.

Xử lý khi cài đặt không thành công

  1. Khi không tìm thấy gói
E: Unable to locate package build-essential

Giải pháp: Cập nhật thông tin kho lưu trữ.

sudo apt update
sudo apt upgrade
  1. Khi xảy ra lỗi quyền hạn
Permission denied

Giải pháp: Hãy thêm sudo vào đầu lệnh để chạy với quyền quản trị.

Tóm tắt các bước cài đặt

Tại đây, chúng tôi đã giải thích các bước cài đặt GCC, cách kiểm tra và cài đặt các gói bổ sung.

Những điểm chính cần nhớ:

  • Có thể dễ dàng cài đặt bằng lệnh sudo apt install build-essential.
  • Kiểm tra trạng thái cài đặt bằng cách kiểm tra phiên bản.
  • Nếu cần, hãy cài đặt thêm các công cụ như G++ và gdb.

4. Cách sử dụng GCC cơ bản

Tạo và biên dịch một chương trình đơn giản

  1. Tạo chương trình mẫu

Trước tiên, hãy tạo một chương trình “Hello, World!” đơn giản.

nano hello.c

Khi trình soạn thảo mở ra, hãy nhập đoạn mã sau:

#include <stdio.h>

int main() {
    printf("Hello, World!n");
    return 0;
}

Sau khi nhập xong, nhấn **Ctrl + X** để lưu, sau đó nhấn **Y** để thoát.

Biên dịch chương trình

Tiếp theo, sử dụng GCC để biên dịch chương trình này.

gcc hello.c -o hello

Giải thích lệnh:

  • gcc: Lệnh của trình biên dịch.
  • hello.c: Tên tệp mã nguồn cần biên dịch.
  • -o hello: Chỉ định tên tệp đầu ra là “hello”.

Chạy chương trình đã biên dịch

Thực thi chương trình đã biên dịch bằng lệnh sau:

./hello

Ví dụ đầu ra:

Hello, World!

Nếu kết quả này hiển thị, có nghĩa là chương trình đã được biên dịch và chạy thành công.

Xử lý lỗi khi xảy ra

  1. Lỗi do sai sót trong mã

Ví dụ thông báo lỗi:

hello.c: In function ‘main’:
hello.c:3:5: error: expected ‘;’ before ‘return’
    return 0;

Giải pháp:
Thông báo lỗi cho biết vị trí vấn đề (ví dụ: dòng 3). Kiểm tra mã của bạn và sửa lỗi cú pháp.

  1. Lỗi biên dịch

Ví dụ thông báo lỗi:

gcc: command not found

Giải pháp:
Có thể GCC chưa được cài đặt. Hãy cài đặt lại bằng lệnh sau:

sudo apt install build-essential
  1. Lỗi khi chạy

Ví dụ thông báo lỗi:

bash: ./hello: Permission denied

Giải pháp:
Nếu tệp không có quyền thực thi, hãy thêm quyền bằng lệnh sau:

chmod +x hello
./hello

Tùy chọn tối ưu hóa chương trình

GCC cho phép bạn sử dụng các tùy chọn tối ưu hóa để cải thiện hiệu suất của chương trình.

Ví dụ: Chỉ định mức tối ưu hóa

gcc -O2 hello.c -o hello
  • -O1: Tối ưu hóa cơ bản.
  • -O2: Tối ưu hóa nâng cao hơn.
  • -O3: Tối ưu hóa tối đa (ưu tiên tốc độ xử lý).

Điều này giúp tối ưu hóa tốc độ thực thi và kích thước mã.

Tóm tắt

Trong phần này, chúng tôi đã giải thích các bước cơ bản từ việc tạo chương trình đến biên dịch và chạy bằng GCC.

Những điểm chính cần nhớ:

  • Học cách tạo và biên dịch mã mẫu.
  • Kiểm tra cách xử lý khi xảy ra lỗi.
  • Giới thiệu cách sử dụng các tùy chọn tối ưu hóa để cải thiện hiệu suất chương trình.

5. Quản lý nhiều phiên bản

Cài đặt nhiều phiên bản

Trên Ubuntu, bạn có thể cài đặt đồng thời các phiên bản GCC khác nhau. Hãy làm theo các bước sau để cài đặt nhiều phiên bản:

  1. Kiểm tra các phiên bản có sẵn
sudo apt search gcc-

Lệnh này cho phép bạn xem danh sách các phiên bản GCC trong kho lưu trữ.

Ví dụ: Đầu ra

gcc-9 - GNU C compiler
gcc-10 - GNU C compiler
gcc-11 - GNU C compiler
  1. Cài đặt phiên bản mong muốn

Ví dụ, cài đặt GCC 9 và GCC 10:

sudo apt install gcc-9 gcc-10

Sau khi cài đặt hoàn tất, hãy thiết lập cách chuyển đổi giữa các phiên bản.

Cách chuyển đổi phiên bản

Trên Ubuntu, bạn có thể dễ dàng chuyển đổi phiên bản GCC bằng lệnh update-alternatives.

  1. Thiết lập quản lý phiên bản

Trước tiên, hãy đăng ký các phiên bản GCC đã cài đặt với update-alternatives.

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100

Trong cấu hình này, chúng tôi đã ưu tiên đăng ký GCC 10 (100) làm phiên bản mặc định.

  1. Chọn phiên bản để sử dụng

Bạn có thể chọn thủ công phiên bản muốn sử dụng bằng lệnh sau:

sudo update-alternatives --config gcc

Ví dụ đầu ra:

There are 2 choices for the alternative gcc (providing /usr/bin/gcc).

  Selection    Path             Priority   Status
------------------------------------------------------------
* 0            /usr/bin/gcc-10  100       auto mode
  1            /usr/bin/gcc-9   90        manual mode
  2            /usr/bin/gcc-10  100       manual mode

Press <enter> to keep the current choice[*], or type selection number:

Nhập số mong muốn và nhấn Enter.

Cách sử dụng một phiên bản cụ thể cho từng dự án

Nếu bạn muốn sử dụng một phiên bản cụ thể cho từng dự án, bạn có thể chuyển đổi các liên kết tượng trưng (symbolic links).

  1. Tạo liên kết
sudo ln -sf /usr/bin/gcc-9 /usr/bin/gcc

Lệnh này cho phép bạn đặt GCC 9 làm mặc định.

  1. Kiểm tra phiên bản
gcc --version

Hãy xác nhận rằng phiên bản đã được thiết lập đúng cách.

Tóm tắt

Trong phần này, chúng tôi đã giải thích cách cài đặt nhiều phiên bản GCC và cách dễ dàng chuyển đổi chúng bằng update-alternatives.

Những điểm chính cần nhớ:

  • Cài đặt các phiên bản cần thiết và quản lý chúng bằng update-alternatives.
  • Cũng có thể thiết lập để sử dụng một phiên bản cụ thể cho từng dự án.

6. Khắc phục sự cố

Lỗi khi cài đặt và cách xử lý

Ví dụ lỗi 1: Không tìm thấy gói

E: Unable to locate package build-essential

Nguyên nhân:
Danh sách gói chưa được cập nhật hoặc có vấn đề với cấu hình kho lưu trữ.

Giải pháp:
Chạy các lệnh sau để cập nhật thông tin kho lưu trữ:

sudo apt update
sudo apt upgrade
sudo apt install build-essential

Giải pháp bổ sung:

sudo add-apt-repository universe
sudo apt update

Điều này có thể giúp tìm thấy gói.

Ví dụ lỗi 2: Lỗi quyền hạn

Permission denied

Nguyên nhân:
Lệnh không được thực thi với quyền quản trị.

Giải pháp:
Tất cả các lệnh cài đặt phải được chạy với sudo.

sudo apt install build-essential

Lỗi khi biên dịch và cách xử lý

Ví dụ lỗi 1: Không tìm thấy trình biên dịch

gcc: command not found

Nguyên nhân:
GCC chưa được cài đặt hoặc PATH không được thiết lập đúng.

Giải pháp:
Kiểm tra xem GCC đã được cài đặt chưa:

sudo apt install gcc

Nếu đã cài đặt, hãy sửa liên kết tượng trưng bằng lệnh sau:

sudo ln -s /usr/bin/gcc-10 /usr/bin/gcc

Ví dụ lỗi 2: Lỗi liên kết thư viện

undefined reference to 'main'

Nguyên nhân:
Hàm main không được định nghĩa trong chương trình hoặc là lỗi liên kết.

Giải pháp:
Kiểm tra xem hàm main đã được bao gồm đúng cách trong mã của bạn chưa. Ngoài ra, hãy biên dịch lại với tùy chọn liên kết như sau:

gcc -o output main.c -lm

Lỗi khi chạy và cách xử lý

Ví dụ lỗi 1: Không có quyền thực thi

bash: ./program: Permission denied

Nguyên nhân:
Tệp thực thi không có quyền thực thi.

Giải pháp:
Cấp quyền thực thi bằng lệnh sau:

chmod +x program
./program

Ví dụ lỗi 2: Thiếu thư viện

error while loading shared libraries: libXXX.so: cannot open shared object file: No such file or directory

Nguyên nhân:
Thư viện chia sẻ cần thiết chưa được cài đặt.

Giải pháp:
Xác định tên thư viện bị thiếu và cài đặt nó:

sudo apt install libXXX-dev

Lỗi khi quản lý phiên bản và cách xử lý

Ví dụ lỗi: Không chuyển đổi phiên bản được

gcc --version

Nếu phiên bản bạn đã chuyển đổi không hiển thị, hãy kiểm tra lại cấu hình update-alternatives.

Giải pháp:

  1. Kiểm tra danh sách cấu hình.
sudo update-alternatives --config gcc
  1. Chọn đúng số.
  2. Cập nhật liên kết tượng trưng.
sudo ln -sf /usr/bin/gcc-9 /usr/bin/gcc

Tóm tắt

Trong phần này, chúng tôi đã giải thích các sự cố thường gặp khi cài đặt và sử dụng GCC cùng với các giải pháp cụ thể.

Những điểm chính cần nhớ:

  • Lỗi cài đặt có thể được xử lý bằng cách cập nhật gói hoặc sửa cấu hình kho lưu trữ.
  • Lỗi biên dịch: kiểm tra mã và tùy chọn liên kết.
  • Lỗi khi chạy: kiểm tra quyền hạn và thiếu thư viện.
  • Khi quản lý phiên bản: có thể điều chỉnh bằng liên kết tượng trưng hoặc update-alternatives.

7. Phần Câu hỏi thường gặp (FAQ)

Làm thế nào để cài đặt phiên bản GCC mới nhất?

Câu hỏi:
Tôi muốn cài đặt phiên bản GCC mới nhất, nhưng kho lưu trữ mặc định chỉ có phiên bản cũ. Làm thế nào để cài đặt phiên bản mới nhất?

Trả lời:
Để cài đặt phiên bản GCC mới nhất, bạn cần thêm kho lưu trữ PPA.

  1. Thêm kho lưu trữ PPA:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
  1. Cập nhật danh sách gói:
sudo apt update
  1. Cài đặt phiên bản mới nhất:
sudo apt install gcc-12
  1. Kiểm tra phiên bản:
gcc --version

Cách gỡ cài đặt GCC?

Câu hỏi:
Nếu tôi muốn gỡ cài đặt GCC, tôi nên làm thế nào?

Trả lời:
Bạn có thể gỡ cài đặt GCC bằng các lệnh sau:

sudo apt remove gcc
sudo apt autoremove

Nếu bạn muốn xóa các công cụ liên quan, hãy thêm lệnh sau:

sudo apt remove build-essential

Xử lý khi chỉ có thể chọn phiên bản GCC cũ hơn?

Câu hỏi:
Ngay cả khi tôi sử dụng update-alternatives --config gcc, tôi vẫn chỉ có thể chọn các phiên bản cũ hơn. Làm thế nào để thêm phiên bản mới nhất?

Trả lời:
Bạn có thể thêm phiên bản mới nhất theo cách thủ công.

  1. Cài đặt phiên bản cần thiết.
sudo apt install gcc-12
  1. Thêm thủ công vào cấu hình thay thế.
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 120
  1. Chọn phiên bản.
sudo update-alternatives --config gcc

Cách xử lý khi xảy ra lỗi phụ thuộc?

Câu hỏi:
Đã xảy ra lỗi phụ thuộc trong quá trình cài đặt GCC. Làm thế nào để giải quyết nó?

Trả lời:
Lỗi phụ thuộc có thể do hệ thống của bạn không được cập nhật. Vui lòng chạy các lệnh sau:

sudo apt update
sudo apt upgrade

Nếu vẫn không giải quyết được, hãy tự động sửa lỗi phụ thuộc:

sudo apt --fix-broken install

Làm thế nào để sử dụng một phiên bản GCC cụ thể cho từng dự án?

Câu hỏi:
Nếu tôi muốn sử dụng các phiên bản GCC khác nhau cho mỗi dự án, tôi có thể cấu hình như thế nào?

Trả lời:
Bạn có thể thiết lập liên kết tượng trưng trong thư mục dự án.

  1. Tạo một liên kết GCC dành riêng cho dự án.
ln -s /usr/bin/gcc-9 ./gcc
  1. Sử dụng khi biên dịch cục bộ.
./gcc -o program program.c

Cách xử lý khi xuất hiện thông báo lỗi “command not found”?

Câu hỏi:
Tôi đã cài đặt GCC rồi, nhưng lại hiển thị gcc: command not found. Tôi phải làm gì?

Trả lời:
Trước tiên, hãy kiểm tra cài đặt:

dpkg -l | grep gcc

Nếu GCC chưa được cài đặt, hãy cài đặt lại:

sudo apt install gcc

Nếu vẫn không giải quyết được, hãy kiểm tra liên kết tượng trưng:

ls -l /usr/bin/gcc

Nếu liên kết bị hỏng, hãy sửa nó:

sudo ln -sf /usr/bin/gcc-10 /usr/bin/gcc

Tóm tắt

Trong phần này, chúng tôi đã giới thiệu các câu hỏi thường gặp về GCC và các giải pháp cụ thể.

Những điểm chính cần nhớ:

  • Phiên bản mới nhất có thể được cài đặt thông qua kho lưu trữ PPA.
  • Gỡ cài đặt và quản lý phiên bản có thể dễ dàng thiết lập bằng update-alternatives.
  • Cũng đã giới thiệu các ví dụ lệnh cụ thể khi xảy ra sự cố.

8. Tóm tắt và các bước tiếp theo

Tổng kết các điểm chính của bài viết này

  1. Tổng quan và vai trò của GCC
  • GCC là một trình biên dịch mạnh mẽ hỗ trợ nhiều ngôn ngữ lập trình, bao gồm C và C++.
  • Trên Ubuntu, nó có thể dễ dàng cài đặt từ kho lưu trữ chính thức và lý tưởng để xây dựng môi trường phát triển.
  1. Các bước cài đặt và chuẩn bị
  • Cập nhật hệ thống lên trạng thái mới nhất và cài đặt gói build-essential.
  • Thiết lập môi trường bằng cách kiểm tra phiên bản và khắc phục sự cố phụ thuộc.
  1. Cách sử dụng cơ bản
  • Đã giải thích quy trình tạo, biên dịch và chạy chương trình mẫu.
  • Cũng đã giới thiệu cách xử lý khi xảy ra lỗi và các tùy chọn tối ưu hóa.
  1. Quản lý và chuyển đổi nhiều phiên bản
  • Giải thích cách sử dụng lệnh update-alternatives để chuyển đổi giữa các phiên bản GCC phù hợp cho từng dự án.
  1. Khắc phục sự cố và Câu hỏi thường gặp
  • Đã giải thích các lỗi có thể xảy ra trong quá trình cài đặt và sử dụng cùng với các ví dụ cụ thể về cách khắc phục.

Giới thiệu các tài nguyên bổ sung

Dưới đây là các tài nguyên hữu ích để học hỏi và áp dụng thêm:

  1. Tài liệu chính thức của Ubuntu
  1. Tài liệu chính thức của GNU GCC
  1. Hướng dẫn console Linux
  • Linux Console chứa thông tin khắc phục sự cố tổng quát về Linux.
  1. Các trang web học tập và diễn đàn
  • Bạn có thể tham khảo các ví dụ mã và câu trả lời trên QiitaStack Overflow.

Các bước tiếp theo

  1. Ứng dụng vào phát triển chương trình
  • Sử dụng GCC trong các dự án thực tế để phát triển các chương trình phức tạp hơn.
  1. Sử dụng và mở rộng thư viện
  • Cài đặt các thư viện bổ sung khi cần thiết để mở rộng chức năng của dự án.
  1. Học hỏi ngôn ngữ và công cụ mới
  • Nâng cao kỹ năng của bạn bằng cách học các ngôn ngữ lập trình và công cụ xây dựng khác.
  1. Tham gia cộng đồng
  • Tham gia các diễn đàn hoặc dự án mã nguồn mở để chia sẻ kiến thức và rèn luyện kỹ năng thực tế.

Lời kết

Bài viết này đã giải thích từng bước từ cài đặt đến sử dụng GCC trên Ubuntu. Nó bao gồm các bước và khắc phục sự cố để ngay cả người mới bắt đầu cũng có thể dễ dàng thiết lập môi trường.

Lời cuối:
Hãy sử dụng bài viết này làm tài liệu tham khảo để sử dụng GCC trong dự án của riêng bạn và tận hưởng việc phát triển chương trình. Nếu bạn có thêm câu hỏi, hãy sử dụng phần Câu hỏi thường gặp hoặc các tài nguyên bổ sung để tìm giải pháp.

Bài viết tiếp theo sẽ đề cập đến cú pháp cơ bản của ngôn ngữ C và C++ cũng như các kỹ thuật phát triển nâng cao. Hãy theo dõi các cập nhật trong tương lai!

 

侍エンジニア塾