Bài giảng Hệ điều hành Unix: Chương 6 - Ngô Duy Hòa
lượt xem 6
download
Chương 6 trình bày các nội dung liên quan đến lập trình C như: Các bước biên dịch trong chương trình Unix/Linux, sử dụng make tools, lập trình cơ bản với C,. Mời các bạn cùng tham khảo để tìm hiểu thêm nội dung chi tiết.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Hệ điều hành Unix: Chương 6 - Ngô Duy Hòa
- Ngo Duy Hoa - KHMT - CNTT -BKHN Nội dung bài học • Các bước biên dịch chương trình. • Sử dụng MAKEFILE Bài 6. Lập trình C • Cơ bản về lập trình Unix/Linux C. • … Ngô Duy Hòa – KHMT - CNTT 1. Biên dịch trong Unix/Linux 1.1 Cấu trúc file thực thi Cấu trúc a.out và COFF file Cấu trúc ELF file Ngo Duy Hoa - KHMT - CNTT -BKHN 1
- Ngo Duy Hoa - KHMT - CNTT -BKHN Các sections chính trong ELF Linux Run-time Memory Image Memory invisible to Kernel virtual memory user code 0xc0000000 User stack (created at runtime) %esp (stack pointer) Memory-mapped region for shared libraries 0x40000000 brk Run-time heap (created by malloc) Read/write segment (.data, .bss) Loaded from the Read-only segment executable file (.init, .text, .rodata) 0x08048000 0 Unused Nạp chương trình vào bộ nhớ tiến trình 1.2 Các bước biên dịch chương trình File data.h File io.c void data_func(); #include GCC – GNU Compiler Collection #include “data.h” File io.h • cpp: preprocess macros void io_func() void io_func(); { • cc1: perform semantic routines and printf(“IO func.\n”); translate into assembly language File main.c } • as: assemble to relocatable object files #include “io.h” File data.c #include “data.h” • ld: linking #include • To view the commands executed to run int main () #include “data.h” the stages of compilation. { io_func(); void data_func() – gcc -v data_func(); { return 0; printf(“Data func.\n”); } } Ngo Duy Hoa - KHMT - CNTT -BKHN 2
- Ngo Duy Hoa - KHMT - CNTT -BKHN 1.3 Biên dịch file thư viện Linking with Static Libraries From Source to Execution Source Program Assembly Preprocessor Compiler Code Assembler cpp / gcc -E cc1 / gcc -S as / gcc -c dynamic- Object static- linking Program linking Executables Linker Loader ld / gcc -l Ngo Duy Hoa - KHMT - CNTT -BKHN 3
- Ngo Duy Hoa - KHMT - CNTT -BKHN Dynamic Linking with Shared Library Tạo thư viện liên kết tĩnh Shared library? Position-Independent Code 0x08048000 main: 0x08048000 main: program ... program ... call printf call printf 0x08048f44 printf: PLT printf: ... (r/o code) call GOT[5] libc ret ... GOT [5]: &printf (r/w data) Static Libraries ... 0x40001234 printf: libc ... ret Dynamic Shared Libraries Lazy Dynamic Linking 0x080480 00 main: program ... • Lazy mode: Thư viện call printf được nạp khi có lời PLT printf: (r/o code) call GOT[5] gọi đến nó. ... GOT [5]: dlfixup (r/w data) ... 0x400012 34 printf: dlfixup: libc ... GOT[5] = &printf ret call printf Ngo Duy Hoa - KHMT - CNTT -BKHN 4
- Ngo Duy Hoa - KHMT - CNTT -BKHN Sử dụng makefile 2. Sử dụng make tools Đặt kịch bản biên dịch chương trình, không phải gõ lại nhiều lần Makefile Ví dụ thứ nhất • Makefile được sử dụng trong lời gọi: $ make • Nếu đặt tên khác (makefile) thì gọi: – make –f filename Ví dụ thứ hai Ví dụ thứ hai (tiếp) Ngo Duy Hoa - KHMT - CNTT -BKHN 5
- Ngo Duy Hoa - KHMT - CNTT -BKHN 3. Lập trình cơ bản với C Ngo Duy Hoa - KHMT - CNTT -BKHN 6
- Ngo Duy Hoa - KHMT - CNTT -BKHN Thank you! Ngo Duy Hoa - KHMT - CNTT -BKHN 7
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Hệ điều hành Unix: Chương IV - Giới thiệu hệ điều hành Unix
57 p | 244 | 21
-
Bài giảng Hệ điều hành UNIX-Linux: Giới thiệu môn học - Nguyễn Trí Thành
7 p | 149 | 13
-
Bài giảng Hệ điều hành Unix: Chương 1 - Ngô Duy Hòa
60 p | 122 | 10
-
Bài giảng Hệ điều hành Unix-Linux: Chương 1 - Đặng Thu Hiền
20 p | 133 | 8
-
Bài giảng Hệ điều hành UNIX-Linux: Chương 1 - Nguyễn Trí Thành
16 p | 138 | 8
-
Bài giảng Hệ điều hành Unix-Linux: Giới thiệu môn học - Đặng Thu Hiền
5 p | 75 | 6
-
Bài giảng Hệ điều hành Unix - Chương 1: Các khái niệm và kỹ nawng cơ bản
98 p | 75 | 6
-
Bài giảng Hệ điều hành Unix: Chương 2 - Ngô Duy Hòa
27 p | 101 | 6
-
Bài giảng Hệ điều hành Unix-Linux: Chương 4 - Đặng Thu Hiền
13 p | 66 | 5
-
Bài giảng Hệ điều hành UNIX-Linux: Chương 4 - Nguyễn Trí Thành
16 p | 83 | 5
-
Bài giảng Hệ điều hành Unix: Chương 3 - Ngô Duy Hòa
19 p | 73 | 5
-
Bài giảng Hệ điều hành Unix: Chương 7 - Ngô Duy Hòa
8 p | 93 | 5
-
Bài giảng Hệ điều hành Unix: Chương 9 - Ngô Duy Hòa
8 p | 91 | 5
-
Bài giảng Hệ điều hành UNIX-Linux: Chương 8 - Nguyễn Trí Thành
38 p | 79 | 5
-
Bài giảng Hệ điều hành Unix-Linux: Chương 3 - Đặng Thu Hiền
58 p | 84 | 4
-
Bài giảng Hệ điều hành UNIX-Linux: Chương 5 - Nguyễn Trí Thành
18 p | 82 | 4
-
Bài giảng Hệ điều hành Unix-Linux: Chương 7 - Đặng Thu Hiền
41 p | 74 | 3
-
Bài giảng Hệ điều hành Unix-Linux: Chương 2 - Đặng Thu Hiền
24 p | 73 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn