bài này được copy từ trang web:
Code:
http://forum.ubuntu-vn.org/viewtopic.php?f=23&t=769
Bài 1: Giới thiệu
Hầu hết mọi người lập trình C đều bắt đầu bằng TC, VC, đều là các ứng dụng trên DOS hoặc trên Win. Thói quen đó thường do những người đi trước, các thầy cô giáo gợi ý. Chính bởi thế mà TC trở thành quen thuộc với những người mới tiếp cận, kéo theo nó là những cách hiểu ko chính xác, những cách nhìn ko hệ thống. Chỉ lấy một ví dụ đơn giản, nhiều sinh viên nghĩ rằng TC, VC chính là C/C++ mà ko hiểu bản chất của nó chỉ là 1 trình biên dịch của C/C++ có kèm theo trình soạn thảo.
Đã quá quen với TC sẽ làm chúng ta bị "kìm hãm" trong những hạn chế của TC: Thứ nhất, TC chạy trên nền DOS --> hạn chế đồ họa. Thứ 2, thư viện của TC có nhiều hạn chế. Thứ 3, TC là một IDE (nó là cái gì thì làm ơn tự tìm hiểu nhé!) --> chúng ta bỏ qua mất một số thứ như: makefiles, hệ thống điều khiểu version, luyện tập sử dụng các thư viện khác.
Bài viết này của tôi chỉ mong muốn giới thiệu một số nét khởi động để bắt đầu đi vào lập trình C/C++. Bài viết có tham khảo các ví dụ của ngài Shridhar Daithankar.
Bài 2: Bắt đầu
I./ Những thao tác trước khi bắt đầu:
-- Cài Linux và các gói development
-- Dưới đây là một số ví dụ để kiểm tra sự tồn tại của các công cụ phát triển (chạy trên Slackware 10 và Open Suse 10
Code:
~$ which gcc
/usr/bin/gcc
Code:
~$ which g++
/usr/bin/g++
Code:
~$ which make
/usr/bin/make
Code:
~$ which vi
/usr/bin/vi
Code:
~$ which pico
/usr/bin/pico
Nếu có các thứ trên đầy đủ thì bắt đầu, còn nếu thiếu 2 cái cuối thì cũng .. bắt đầu vì nó chỉ là trình soạn thảo, dùng cái khác cũng được.
II. Chương trình đầu tiên:
-- Dùng bất kì trình soạn thảo nào và đánh đoạn code sau vào. Save với tên là hello.c (ở đây dùng pico)
Code:
#include <stdio.h>
int main(void)
{
printf("Hello World \n");
return(0);
}
-- Ấn Ctrl + X để quit. Pico hỏi có save ko --> ấn "Y". Nó yêu cầu đánh tên --> hello.c
-- Dịch:
Code:
~$ gcc -o hello hello.c
-- Nếu ko có lỗi gì thì sẽ ra file hello. Chạy thử bằng lệnh:
-- Chú ý:
+ Dấu "." chính là thư mục hiện tại.
+ Linux dùng "/" thay vì "\" của DOS
III. Tổng kết:
-- Trên Linux, trình biên dịch và soạn thảo khác nhau.
-- Trình biên dịch dùng dòng lệnh.
-- Trình biên dịch trên Linux là "gcc"
Bài 3: Trình biên dịch C/C++
Trình biên dịch C trên Linux chỉ là một phần GCC (GNU Compiler Collection). GCC có thể dùng được với: C, C++, Objective C, Fortran, (ko biết có còn gì nữa ko!)
Biên dịch C là "gcc"
Biên dịch C++ là "g++"
Lệnh cho version:
I. Các tùy chọn trong dòng lệnh:
Các tùy chọn điều khiển sụ biên dịch. Có rất nhiều lựa chọn có thể sử dụng, bởi thế tôi chỉ nêu lên một số tùy chọn phổ biến.
1. Tùy chọn "-c":
Giúp trình biên dịch file va thủ tục tạo một object file (tất nhiên là cả chương trình chạy, cái này là mặc định!). File object có phần mở rộng là ".o" hoặc ".obj".
Ví dụ:
Code:
~$ gcc -c -o hello hello.c
2. Tùy chọn "-o <name>":
<name> là tên mà ta chọn cho file chạy thay cho tên mặc định (tên file mặc định là "a.out")
3. Tùy chọn "-O <n>":
Chỉ dẫn này tạo chương trình với <n> tạm hiểu là thứ tự ưu tiên (hay tối ưu). n = 1, 2, 3. Thông thường dùng là n = 2.
4. Tùy chọn "-g":
Tạo chương trình và có hiện thông báo lỗi (nếu có).
5. Tùy chọn "-I <directory name>":
Thêm thư mục đặc biệt (bao gồm cả đường dẫn) để tìm kiếm. Trình biên dịch sẽ tìm trong thư mục đó các file được khai báo đầu file nguồn (chứa code).
Mặc định trình biên dịch sẽ search trong /usr/include
6. Tùy chọn "-L <directory name>":
Tìm thư viện (Tương tự -I), mặc định là /usr/lib
Kéo theo nó là "-l <library name>". (Chắc ko cần giải thích gì thêm rồi!)
***/ Lưu ý:
-- Trước khi sử dụng thư viện phải khai báo ở đầu file và có thể sử dụng lựa chọn "-I" ở trên.
-- Nếu ko tìm được thư viện thường xuất hiện lỗi "Undefiled symbols" error.
Bài 4: Các vấn đề về thư viện trong Linux
I. Các loại thư viện:
Thư viện được chia làm 2 loại, để hiểu chi tiết về các loại là vấn đề ko dễ dàng nên tôi chỉ nêu ra, bạn nào muốn tìm hiểu kỹ hơn thì có thể tìm hiểu trên các tài liệu khác.
1. Static libraries:
-- Tên thường có "lib" và mở rộng ".a"
Ví dụ: libmyprog.a
2. Shared libraries:
-- Tên có "lib" và phần mở rộng ".so"
Ví dụ: libmyprog.so
II. Cài đặt thư viện:
Trước khi được sử dụng thì thư viện phải được cài đặt. Việc cài đặt thư viện gần như rất dễ dàng và đơn giản với người đã từng sử dụng Linux.
-- Các thư viện có thể nên cài vào máy là: ncurses, SVGALib và ngoài ra có thể sử dụng các đồ họa cấp cao như GTK/Qt/FLTK thậm chí trực tiếp với X.
Ở đây tôi chỉ đề cập tới "ncurses". Bạn có thể load về và cài vào máy tại địa chỉ:
Code:
http://ftp.gnu.org/pub/gnu/ncurses/
Và hướng dẫn cài đặt chi tiết tại:
Điều cuối cùng trong bài này là hãy quên TC đi:
-- Trong Linux ko có thư viện dos.h
-- Không có thư viện conio.h (Thay vào đó là ncurses)
-- Không có thư viện graphics của TC (thứ tương đối đơn giản) và thay vào đó là SVGAKib (cái này thì từ từ sẽ động đến)