1. Trang chủ
  2. » Công Nghệ Thông Tin

chap01 c linux vanlangembeddedsystems

23 127 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 23
Dung lượng 405,05 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nội dung biên dịch C„ Biên dịch và thực thi chương trình C/C++ ‰ Giới thiệu về process ‰ Tổ chức của một process ‰ Background và foreground process ‰ Các lệnh thao tác với process „ Lập

Trang 3

‰ Ký tự mẫu (wild cards): ?, *, []

‰ find pathname -name filename -print

‰ Rpm, grep, which, whereis, locate

Trang 5

Môi trường lập trình

Trang 6

Nội dung biên dịch C

„ Biên dịch và thực thi chương trình C/C++

‰ Giới thiệu về process

‰ Tổ chức của một process

‰ Background và foreground process

‰ Các lệnh thao tác với process

„ Lập trình process với fork(), exec…()

Trang 7

Quá trình tạo tập tin thực thi

Tập tin Obj N

Liên Kết Tập Tin

Thực Thi

Loader

Image tiến trình trong bộ nhớ

Trang 8

Các công cụ

‰ Thư viện các hàm tiện ích: libc, libstdc++, …

‰ Các trình biên dịch: gcc, g++, gcj, gas, …

‰ Trình khử lỗi : gdb

„ Trình tiện ích khác:

‰ nm, strip, ar, objdump, ranlib(dùng lệnh info

binutils để xem thêm)

„ Tiện ích: gmake, make, …

Trang 9

Trình biên dịch 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

„ Bước 1, 2, 3 thường xử lý một tập tin đầu vào

„ Bước 4: liên kết nhiều object module liên quan để tạo thành tập tin thực thi nhị phân

„ có thể can thiệp vào từng bước

Trang 10

gcc -E Hello.c -o Hello.cpp

gcc -S Hello.c [-o Hello.s]

gcc -c Hello.c [-o Hello.o]

gcc Hello.c [-o Hello]

gcc c.o b.o Hello.o [-o Hello]

Trang 11

Thực hiện bước tiền xử lý -E

Chèn mã hỗ trợ Debug -g

Tối ưu mã thực thi -O [n]

Tên thư mục chứa các thư viện Lib dạng (.a , so )

Trang 14

Biên dịch chương trình C/C++

„ Biên dịch(không link) một file chương trình nguồn C đơn lẻ

‰ Gcc -c main.c

„ Kết quả là object file tên main.o

„ Biên dịch(không link) file chương trình nguồn C++

‰ g++ -c myprog.cpp

„ Kết quả là file object tên là myprog.o

„ Biên dịch(không link) main.c có sử dụng các file *.h trong thư

mục “include/” (dùng tùy chọn -I để chỉ định đường dẫn)

Trang 15

Biên dịch chương trình C/C++

„ Liên kết(link) nhiều file đối tượng(object files) đã có

‰ g++ -o myapp main.o reciprocal.o

‰ Gcc -o myapp main.o reciprocal.o

„ Tên file tạo ra là gì? Cho biết quyền hạn trên file đó?

„ Thựcthitạidấunhắclệnh: $ /myapp 3

„ Liên kết object files với các thư viện(libraries) khác

„ Liên kết với thư viện chuẩn POSIX pthread

(/usr/lib/libpthread.so)

‰ Gcc -o myapp main.o -lpthread

„ Liên kết với thư viện libutility.a ở thư mục /usr/local/lib/somelib

‰ Gcc -o myapp main.o -L/usr/local/lib/somelib -lutility

„ Liên kết với thư viện libtest.so ở thư mục làm việc hiện hành

‰ Gcc -o myapp main.o -L -ltest

Trang 16

Biên dịch chương trình C/C++

„ Lưu ý khi biên dịch trong Linux

„ Dùng g++ nếu chương trình có chứa mã C lẫnC++

„ Dùng gcc nếu chương trình chỉ có mã C

„ Tập tin thực thi tạo ra không có đuôi exe, dll như môi trường

Windows

„ Giả sử ứng dụng gồm nhiều hơn một tập tin source code, chẳng

hạ như main.c và reciprocal.c Để tạo thành chương trình thực

thi, có thể biên dịch trực tiếp bằng một lệnh gcc như sau:

Trang 17

Thư viện lập trình trong Linux

„ Thư viện tĩnh

„ Thư viện động

Trang 18

Thư viện lập trình trong Linux

‰ Giả sử có 2 tập tin: a.c, b.c

Int sum(int a,int b) { Int mult(int a,int b) {

Trang 19

Thư viện lập trình trong Linux

„ Tạo thư viện tĩnh có tên là “libcal.a”

‰ Biên dịch tạo tập tin Object:

‰ Dùng lệnh ar để tạo thư viện

‰ Dùng lệnh nm xem kết quả

‰ Dùng lệnh file để xem loại tập tin

Trang 20

Thư viện lập trình trong Linux

„ Biên dịch có liên kết tới thư viện

Trang 21

Thư viện lập trình trong Linux

„ Thư viện động

‰ Tương tự “.DLL”

‰ Thư mục mặc định:

„ Tạo thư viện động “libcal.so”

‰ Biên dịch với tùy chọn -fPIC

‰ Tạo thư viện

‰ Dùng lệnh xem tập tin

Trang 22

Thư viện lập trình trong Linux

„ Biên dịch tương tự

„ Để thực thi

‰ Chép thư viện tới /lib

‰ Thay đổi biến môi trường: LD_LIBRARY_PATH

„ Xác định thư viện phụ thuộc

ldd myapp

Trang 23

Q/A

Ngày đăng: 19/06/2018, 14:29

TỪ KHÓA LIÊN QUAN