Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Thực hành UNIX/Linux - phần 2 pot
Nội dung xem thử
Mô tả chi tiết
Thực hành UNIX/Linux UNIX/Linux
- phần 2 -
2.2
Khoa Công nghệ Thông tin Thông tin - Đại học Bách Khoa Tp. HCM
Nội dung
Biên dịch và thực thi chương trình C/C++
Giới thiệu về process
z Tổ chức của một process
z Background và foreground process
z Các lệnh thao tác với process
Lập trình process với fork(), exec…()
2.3
Khoa Công nghệ Thông tin Thông tin - Đại học Bách Khoa Tp. HCM
Quá trình tạo process process
.c, .cpp, .cc
gas/gcc/g++
.o
gcc/g++
2.4
Khoa Công nghệ Thông tin Thông tin - Đại học Bách Khoa Tp. HCM
Bộ công cụ phát triển ứng dụng GNU
GNU Compiler Collection (GCC)
z Thư viện các hàm tiện ích: libc, libstdc++, …
z Các trình biên dịch gcc, g++, gcj, gas, …
z Trình khử lỗi gdb
z Trình tiện ích khác trong binutils như nm, strip, ar, objdump,
ranlib (dùng lệnh info binutils để xem thêm)
z Tiện ích: gmake
z …
2.5
Khoa Công nghệ Thông tin Thông tin - Đại học Bách Khoa Tp. HCM
Trình biên dịch GNU C/C++ GNU C/C++
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ợp dịch)
4. linking (liên kết)
Ba bước 1, 2, 3 chủ yếu làm việc với một file đầu vào
Bước 4 có thể liên kết nhiều object module liên quan để tạo
thành file thực thi nhị phân (executable binary)
Lập trình viên có thể can thiệp vào từng bước ở trên $☺01
2.6
Khoa Công nghệ Thông tin Thông tin - Đại học Bách Khoa Tp. HCM
GNU C/C++ compiler ( GNU C/C++ compiler (gcc/g++)
.c,.cc source codes .c,.cc
.cpp
gcc -E hello.c -o hello.cpp
e.g. hello.c
hello.cpp
hello.o
preprocessed
source files
object
code
gcc -x assembler -c hello.s [-o hello.o]
b.o
a.o
.s
gcc -x cpp-output -S hello.cpp [-o hello.s]
assembly
source code
a.out/hello
gcc -S hello.c [-o hello.s]
gcc a.o b.o hello.o [-o hello]
gcc -c hello.c [-o hello.o]
gcc hello.c [-o hello]
executable
binary
2.7
Khoa Công nghệ Thông tin Thông tin - Đại học Bách Khoa Tp. HCM
Tóm tắt một số tùy chọn của gcc
Tùy chọn Công dụng
-o FILE Chỉ định tên của file output (khi biên dịch thành file thực thi, nếu không có -o filename thì tên file mặc định sẽ là a.out)
-c Chỉ biên dịch mà không linking (i.e. chỉ tạo ra object file *.o)
-IDIRNAME Chỉ tên thư mục DIRNAME là nơi chứa các file header (.h) mà gcc sẽ tìm trong đó (mặc định gcc sẽ tự tìm ở các thư mục chuẩn /usr/include, …)
-LDIRNAME Chỉ tên thư mục DIRNAME là nơi chứa các thư viện (.a, .so) mà gcc sẽ tìm trong đó (mặc định gcc sẽ tự tìm ở các thư mục chuẩn /usr/lib, …)
-O [n] Tối ưu mã thực thi tạo ra (e.g. -O2, -O3, hoặc -O)
-g Chèn thêm mã phục vụ công việc debug
-E Chỉ thực hiện bước tiền xử lý (preprocessing) mà không biên dịch
-S Chỉ dịch sang mã hợp ngữ chứ không linking (i.e. chỉ tạo ra file *.s)
-lfoo Link với file thư viện có tên là libfoo (e.g. -lm, -lpthread)
-ansi Biên dịch theo chuẩn ANSI C/C++ (sẽ cảnh báo nếu code không chuẩn)