Lập trình c trên linux

32 602 5
Lập trình c trên linux

Đ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

Lập trình C/Linux Lập trình C/Linux Trình bày: TS. NGÔ BÁ HÙNG Website: http://sites.google.com/site/nbhung 22/10/2010 Ngô Bá Hùng - http://sites.google.com/site/nbhung 2 Lập trình C/Linux Ngôn ngữ phát triển PMMNM • C, C++ • Shell • Perl, • PHP, • Python • Java, • C# 22/10/2010 Ngô Bá Hùng - http://sites.google.com/site/nbhung 3 Lập trình C/Linux Lập trình C/Linux • Lập trình C – Công cụ cần thiết – Trình biên dịch gcc – Tập tin tiêu đề – Tập tin thư viện hàm • Tiện ích make – Tập tin makefile – Macro 22/10/2010 Ngô Bá Hùng - http://sites.google.com/site/nbhung 4 Lập trình C/Linux Lập trình C/Linux • Lập trình C – Công cụ cần thiết – Trình biên dịch gcc – Tập tin tiêu đề – Tập tin thư viện hàm • Tiện ích make – Tập tin makefile – Macro 22/10/2010 Ngô Bá Hùng - http://sites.google.com/site/nbhung 5 Lập trình C/Linux Công cụ cần thiết • Trình soạn thảo văn bản (text): – vi, nano, gedit, emacs, geany, IDE • Trình biên dịch: – gcc/GNU, cc/Sun, bcc/Borland – g++/GNU, CC/Sun • Thư viện chuẩn của ngôn ngữ C – glibc 22/10/2010 Ngô Bá Hùng - http://sites.google.com/site/nbhung 6 Lập trình C/Linux Biên dịch chương trình đơn giản • gcc hello.c – Tạo ra tập tin thực thi a.out • gcc -o hello hello.c – Tạo ra tập tin thực thi hello • gcc -c hello.c – Tạo ra tập tin mã đối tượng hello.o • Thực thi – ./a.out – ./hello /*hello.c*/ #include <stdio.h> main() { printf("Hello, world!\n"); return 0; } 22/10/2010 Ngô Bá Hùng - http://sites.google.com/site/nbhung 7 Lập trình C/Linux Biên dịch chương trình đơn giản • gcc hello.c – Tạo ra tập tin thực thi a.out • gcc -o hello hello.c – Tạo ra tập tin thực thi hello • gcc -c hello.c – Tạo ra tập tin mã đối tượng hello.o • Thực thi – ./a.out – ./hello /*hello.c*/ #include <stdio.h> main() { printf("Hello, world!\n"); return 0; } 22/10/2010 Ngô Bá Hùng - http://sites.google.com/site/nbhung 8 Lập trình C/Linux Mô hình biên dịch C Tiền xử lỹ mã lệnh: Loại bỏ ghi chú, chèn mã nguồn của các tập tin include, Biên dịch mã nguồn đã được tiền xử lý thành mã máy Tiền xử lỹ mã lệnh: Loại bỏ ghi chú, chèn mã nguồn của các tập tin được include, Tạo thành mã đối tượng, có phần mở rộng là .o Liên kết các hàm được tham khảo lại với nhau để tạo thành chương trình thực thi 22/10/2010 Ngô Bá Hùng - http://sites.google.com/site/nbhung 9 Lập trình C/Linux Các tùy chọn của gcc • -Wall: hiển thị toàn bộ các warning • -ansi: Sử dụng C chuẩn ANSI • -o: Đặt tên cho tập tin kết quả biên dịch • -c: Tạo các tập tin đối tượng, không liên kết • -lm: Liên kết với thư viện toán, nếu trong chương trình có #include math.h 22/10/2010 Ngô Bá Hùng - http://sites.google.com/site/nbhung 10 Lập trình C/Linux Ví dụ về gcc • gcc -o hello hello.c – Tạọ ra tập tin thực thi hello • gcc -c hello.c bonjour.c chao.c – Tạo ra các tập tin hello.o bonjour.o chao.o • gcc hello.o bonjour.o chao.o -o helloworld – Liên kết 3 tập tin mã đối tượng để tạo thành một tập tin thực thi helloworld – Tập tin mã đối tượng giúp chỉnh sửa một tập tin không cần biên dịch lại các tập tin khác [...]... make c ch th c biên dịch/biên dịch lại một c ch tự động một chương trình; bao gồm: – C c m c tiêu (targets): thường là c c tập tin th c thi ho c c c tập tin mã đối tượng c n tạo ra – Những sự phụ thu c (dependencies ) để chỉ ra sự phụ thu c của một m c tiêu vào c c tập tin kh c – C c luật (rules) để chỉ ra c ch th c tạo ra c c m c tiêu 22/10/2010 Ngô Bá Hùng - http://sites.google.com/site/nbhung 19 Lập. .. prog2 .c b.h c. h gcc -c prog2 .c 22/10/2010 Ngô Bá Hùng - http://sites.google.com/site/nbhung 22 Lập trình C/ Linux C c m c tiêu trong Makefile myapp: main.o prog1.o prog2.o gcc -o myapp main.o prog1.o prog2.o main.o: main .c a.h gcc -c main .c prog1.o: prog1 .c a.h b.h gcc -c prog1 .c prog2.o: prog2 .c b.h c. h gcc -c prog2 .c 22/10/2010 Ngô Bá Hùng - http://sites.google.com/site/nbhung 23 Lập trình C/ Linux. .. http://sites.google.com/site/nbhung 16 Lập trình C/ Linux Lập trình C/ Linux • Lập trình C – C ng c c n thiết – Trình biên dịch gcc – Tập tin tiêu đề – Tập tin thư viện hàm • Tiện ích make – Tập tin makefile – Macro 22/10/2010 Ngô Bá Hùng - http://sites.google.com/site/nbhung 17 Lập trình C/ Linux Giới thiệu tiện ích make • Là tiện ích lập trình • Giúp người lập trình – Không phải đánh lại c c câu lệnh biên dịch nhiều.. .Lập trình C/ Linux Tập tin tiêu đề (header file) • Chứa c c định nghĩa hằng, c c khai báo về c c hàm hệ thống ho c hàm thư viện mà một chương trình C có thể gọi sử dụng • Lưu trữ m c nhiên ở thư m c chuẩn /usr/include và c c thư m c con c a thư m c này • Sử dụng tùy chọn -I khi biên dịch để tham khảo đến c c tập tin tiêu đề ở một thư m c bất kỳ – gcc -I/usr/openwin/include myprog .c 22/10/2010... prog1.o prog2.o $(CC) -o myapp main.o prog1.o prog2.o main.o: main .c a.h $(CC) -I$(INCLUDE) $(CFLAGS) -c main .c prog1.o: prog1 .c a.h b.h $(CC) -I$(INCLUDE) $(CFLAGS) -c prog1 .c prog2.o: prog2 .c b.h c. h $(CC) -I$(INCLUDE) $(CFLAGS) -c prog2 .c 22/10/2010 Ngô Bá Hùng - http://sites.google.com/site/nbhung 28 Lập trình C/ Linux Macro định sẵn thông dụng • $?: Danh sách c c tập tin phụ thu c có sửa đổi gần đây... http://sites.google.com/site/nbhung 11 Lập trình C/ Linux Tập tin thư viện hàm • Chứa c c hàm đã đư c biên dịch trư c để c thể đư c sử dụng lại bởi c c chương trình C kh c mà không c n phải viết lại • C c tập tin thư viện hàm chuẩn c a hệ thống Linux đư c lưu trong thư m c /lib ho c /usr/lib • Qui t c đặt tên: – Thư viện tĩnh (static librabry): libIndicat.a – Thư viện chia sẻ (shared librabry): libIndicat.so – libc.a... thu c trong Makefile myapp: main.o prog1.o prog2.o gcc -o myapp main.o prog1.o prog2.o main.o: main .c a.h gcc -c main .c prog1.o: prog1 .c a.h b.h gcc -c prog1 .c prog2.o: prog2 .c b.h c. h gcc -c prog2 .c 22/10/2010 Ngô Bá Hùng - http://sites.google.com/site/nbhung 24 Lập trình C/ Linux C c luật trong Makefile myapp: main.o prog1.o prog2.o gcc -o myapp main.o prog1.o prog2.o main.o: main .c a.h gcc -c main .c. .. http://sites.google.com/site/nbhung 20 Lập trình C/ Linux Mã nguồn c a một ứng dụng main .c include a.h include include b.h c. h 22/10/2010 use use prog1 .c include include Ngô Bá Hùng - http://sites.google.com/site/nbhung prog2 .c 21 Lập trình C/ Linux Makefile cho ứng dụng myapp: main.o prog1.o prog2.o gcc -o myapp main.o prog1.o prog2.o main.o: main .c a.h gcc -c main .c prog1.o: prog1 .c a.h b.h gcc -c prog1 .c prog2.o:... http://sites.google.com/site/nbhung 19 Lập trình C/ Linux C ch th c make hoạt động • make bắt đầu từ một m c tiêu đư c yêu c u trong tập tin mô tả Makefile • Kiểm tra xem m c tiêu hiện tại c phụ thu c vào c c m c tiêu kh c không ? Nếu c đi xuống một c c đệ qui c c m c tiêu con • Dịch c c tập tin nguồn thành c c tập tin đối tượng, sau đó liên kết chúng lại thành tập tin th c thi • Chỉ dịch lại tập tin nguồn thành... main.o: main .c a.h $(CC) -I$(INCLUDE) $(CFLAGS) -c main .c prog1.o: prog1 .c a.h b.h $(CC) -I$(INCLUDE) $(CFLAGS) -c prog1 .c echo “Installed in $(INSTDIR)”;\ else \ echo “Sorry, $(INSTDIR) does not exist”;\ fi prog2.o: prog2 .c b.h c. h $(CC) -I$(INCLUDE) $(CFLAGS) -c prog2 .c 22/10/2010 Ngô Bá Hùng - http://sites.google.com/site/nbhung 30 Lập trình C/ Linux Th c thi make với nhiều m c tiêu $ rm *.o myapp $ rm . trình C/ Linux Tập tin thư viện hàm • Chứa c c hàm đã đư c biên dịch trư c để c thể đư c sử dụng lại bởi c c chương trình C kh c mà không c n phải viết lại • C c tập tin thư viện hàm chuẩn c a. http://sites.google.com/site/nbhung 7 Lập trình C/ Linux Biên dịch chương trình đơn giản • gcc hello .c – Tạo ra tập tin th c thi a.out • gcc -o hello hello .c – Tạo ra tập tin th c thi hello • gcc -c hello .c – Tạo. http://sites.google.com/site/nbhung 9 Lập trình C/ Linux C c tùy chọn c a gcc • -Wall: hiển thị toàn bộ c c warning • -ansi: Sử dụng C chuẩn ANSI • -o: Đặt tên cho tập tin kết quả biên dịch • -c: Tạo c c tập

Ngày đăng: 22/10/2014, 23:59

Từ khóa liên quan

Mục lục

  • Slide 1

  • Slide 2

  • Slide 3

  • Slide 4

  • Slide 5

  • Slide 6

  • Slide 7

  • Slide 8

  • Slide 9

  • Slide 10

  • Slide 11

  • Slide 12

  • Slide 13

  • Slide 14

  • Slide 15

  • Slide 16

  • Slide 17

  • Slide 18

  • Slide 19

  • Slide 20

Tài liệu cùng người dùng

Tài liệu liên quan