intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Hệ điều hành Unix: Chương 6 - Ngô Duy Hòa

Chia sẻ: Năm Tháng Tĩnh Lặng | Ngày: | Loại File: PDF | Số trang:7

57
lượt xem
6
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Hệ điều hành Unix: Chương 6 - Ngô Duy Hòa

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. Ngo Duy Hoa - KHMT - CNTT -BKHN 3. Lập trình cơ bản với C Ngo Duy Hoa - KHMT - CNTT -BKHN 6
  7. Ngo Duy Hoa - KHMT - CNTT -BKHN Thank you! Ngo Duy Hoa - KHMT - CNTT -BKHN 7
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
5=>2