Bài thuyết trình power point này giúp bạn hiểu thêm được phần nào về sự khác nhau giữa C++ trong HĐH Windows và G++ trong HĐH Linux (Thực ra C++ trong Windows và G++ trong Linux giống nhau đến hơn 90%,chỉ có một số điểm khác nhau cơ bản trong phần biên dịch mà thôi,hi vọng bài này sẽ giúp các bạn hiểu rô hơn về điều này.)
Trang 1Group: Hell’s Boy
ĐỒ ÁN NGÔN NGỮ LẬP TRÌNH
Trang 2Linux C++ programming
Project:
Nguyễn Hoàng Thiện – 070315T
Trịnh Văn Tú – 070335T
Võ Minh Thu – 070322T
Lê Văn Tuấn – 070370T
Trang 3Tổng quan:
– Giới thiệu sơ lược.
– Thư viện lệnh.
– Cách viết code,hàm.
– Tiến trình biên dịch – Hướng dẫn debug và gỡ lỗi – Trình biên dịch.
– Ví dụ đối chiếu.
Trang 4I - Giới thiệu sơ lược:
• Linux là hệ điều hành nguồn mở Tức là Linux giống như Windows ở chỗ nó là cái nền quản lý mọi thứ khi bạn sử dụng máy tính Nó quản lý các ứng dụng đang chạy, quản lý những thông tin về người dùng, quản lý dữ liệu trên đĩa
cứng…
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, … Biên dịch C là "gcc"
Biên dịch C++ là "g++" Xem hình
Trang 5• Bộ công cụ phát triển ứng dụng GNU
ar, objdump,
• + …
Trang 6• Linux
+Phần mền lập trình là G++ (GNU Compiler Collection)
+Để lập trình cần dùng tới nhiều chương trình khác như:
-gedit:dùng để viết code -terminal:để thực thi
chương trình.
Bên cạnh đó bạn phải cài gói g++ để chương
trình có thể hiểu được.
• Windows +Phần mền lập Trình là
Visual C++ nằm trong
gói Visual studio
+VC là một chương
trình lập trình mạnh
mẽ giúp lập trình viên
có thể viết code và
sửa lỗi và thực thi
chường trình ngay
trong Visual C++
VD0a: Xem Hinh
Vd 0b: Xem hinh
Trang 7• Windows
#include<iostream.h>
Vd: Xem hình
#include<iostream>
Using namespace std;
• Linux
#include<iostream> Using namespace std;
Vd: Xem hình
Thư viện: cả hai đều có thư viện lệnh
chuẩn như: string.h,stdio.h……
Cách khai báo thư viện:
Trong Linux không sử dụng thư viện
lệnh <conio.h> nhưng thay vào đó lại là lệnh<curses.h>
Trang 8Cách tạo thư viện tĩnh
hàm là a.c và b.c
• a.c b.c
Trang 9• Tạo thư viện tĩnh tên là libab.a
• 1. Biên dịch tạo các file object
• $ gcc -c a.c b.c
• 2. Dùng lệnh ar để tạo thành thư viện tĩnh
tên là libab.a
• $ ar cr libab.a a.o b.o
• 3. Có thể dùng lệnh nm để xem lại kết
quả
• $ nm libab.a
• 4. Có thể dùng lệnh file để xem file
libab.a là loại file gì
• $ file libab.a
Trang 10Thư viện liên kết động
chọn -fPIC
• $ g++ -c -fPIC a.c b.c
• $ g++ -shared -fPIC -o libab.so a.o b.o
loại file gì
• $ file libab.so
Trang 11• Linux Int main () Int main (void) Void main ()
• Windows
Void main ()
Int main ()
Int main (void)
Main (void)
Cách viết thân hàm
Vd1a: Xem hình Vd1b: Xem hình
Trang 12• Linux:
• Tùy chọn "-c":
- Giúp trình biên dịch file và 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ụ: ~$ gcc -c -o hello hello.c
• 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")
Trang 13• 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
• Tùy chọn "-g":
- Tạo chương trình và có hiện thông báo lỗi (nếu có)
Trang 14• 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
• Tùy chọn "-L <directory name>":
- Tìm thư viện (Tương tự -I), mặc định là /usr/lib
Trang 15• Công cụ dùng biên dịch các chương trình C/C++
• Quá trình biên dịch thành file thực thi gồm 4 giai
đoạn theo thứ tự như sau:
1 Preprocessing (tiền xử lý)
2 Compilation (biên dịch)
3 Assembly (hợpdịch)
4 Linking (liên kết)
• Ba bước 1, 2, 3 chủ yếulàm việc với một file
đầuvào
• Bước4 có thể liên kết nhiều object module liên
quan để tạo thành file thực thi nhị phân
• Lập trình viên có thể can thiệpvào từng bước ở
trên
Trang 16Hướng dẫn debug và gỡ lỗi
• Tất cả các phần mềm đều chứa đựng lỗi
Thông thường thì 100 dòng lệnh là có
khoảng 2-5 dòng lệnh bị lỗi ( 2-5%) Các lỗi thường gặp được phân loại và sử dụng
một số phương pháp chung để loại bỏ
chúng như sau:
– Lỗi đặc tả.
– Lỗi thiết kế.
– Lỗi viết mã.
Trang 17Trình biên dịch.
• KDevelop
• Anjuta
• Eclipse là một IDE hỗ trợ lập trình
C giao diện graphic trên Linux,
giống như VC++ trên Windows
Trang 18THE END