Friday, July 17, 2015


1. An Introduction to UNIX, Linux, and GNU
1.1 Unix
Unix hay UNIX là một hệ điều hành máy tính viết vào những năm 1960 và 1970 do một số nhân viên của công ty AT&T Bell Labs bao gồm Ken Thompson, Dennis Ritchie và Douglas McIlroy.Từ góc nhìn người dùng chuyên nghiệp và lập trình viên, hệ thống Unix có đặc điểm là thiết kế theo module, đôi khi còn được gọi là triết lý Unix, nghĩa là hệ điều hành cung cấp một tập hợp các công cụ đơn giản, và mỗi công cụ chỉ thực hiện những chức năng giới hạn và được định nghĩa rõ ràng, với hệ thống file hợp nhất là phương tiện chính để giao tiếp và phần lập trình vỏ và ngôn ngữ lệnh kết hợp các công cụ để thực hiện các chức năng phức tạp.
Ngày nay hệ điều hành Unix được phân ra thành nhiều nhánh khác nhau, nhánh của AT&T, nhánh của một số nhà phân phối thương mại và nhánh của những tổ chức phi lợi nhuận.
Unix có thể chạy trên nhiều loại máy tính khác nhau, từ những máy tính cá nhân cho đến các máy chủ dịch vụ. Nó là một hệ điều hành đa nhiệm (có thể cùng lúc thực hiện nhiều nhiệm vụ) hỗ trợ một cách lý tưởng đối với các ứng dụng nhiều người dùng. Unix được viết bằng ngôn ngữ lập trình C, một ngôn ngữ rất mạnh và mềm dẻo. Unix hỗ trợ các ứng dụng mạng và hỗ trợ nhiều môi trường lập trình khác nhau. Với hàng trăm lệnh và một số lượng rất lớn các tùy chọn, Unix thực sự là một khó khăn đối với người mới bắt đầu. Với sự phát triển của các shell Unix hệ điều hành này đã trở nên phổ dụng hơn trong lĩnh vực điện toán. Wiki Unix.

1.2 Linux
Linux là tên gọi của một hệ điều hành máy tính và cũng là tên hạt nhân của hệ điều hành. Nó có lẽ là một ví dụ nổi tiếng nhất của phần mềm tự do và của việc phát triển mã nguồn mở.
Phiên bản Linux đầu tiên do Linus Torvalds viết vào năm 1991, lúc ông còn là một sinh viên của Đại học Helsinki tại Phần Lan. Ông làm việc một cách hăng say trong vòng 3 năm liên tục và cho ra đời phiên bản Linux 1.0 vào năm 1994. Bộ phận chủ yếu này được phát triển và tung ra trên thị trường dưới bản quyền GNU General Public License. Do đó mà bất cứ ai cũng có thể tải và xem mã nguồn của Linux.
Một cách chính xác, thuật ngữ "Linux" được sử dụng để chỉ Nhân Linux, nhưng tên này được sử dụng một cách rộng rãi để miêu tả tổng thể một hệ điều hành giống Unix (còn được biết đến dưới tên GNU/Linux) được tạo ra bởi việc đóng gói nhân Linux cùng với các thư viện và công cụ GNU, cũng như là các bản phân phối Linux. Thực tế thì đó là tập hợp một số lượng lớn các phần mềm như máy chủ web, các ngôn ngữ lập trình, các hệ quản trị cơ sở dữ liệu, các môi trường làm việc desktop như GNOME và KDE, và các ứng dụng thích hợp cho công việc văn phòng như OpenOffice, LibreOffice. Wiki Linux.

1.3 GNU
GNU được khởi đầu vào năm 1984, mục đích nhằm phát triển một hệ điều hành dạng Unix đầy đủ, đó là phần mềm tự do: hệ thống GNU. GNU được cấu tạo từ các chữ đầu của cụm từ "GNU's Not Unix";


Nhiều biến thể của hệ thống GNU sử dụng nhân (kernel) Linux đang được phổ biến rộng rãi; mặc dù các hệ thống này thường được gọi là "Linux," tên chính xác cho các hệ thống này là Hệ điều hành GNU/Linux.
Một số phần mềm chính được phân phối bởi GNU Project:
+ GCC: The GNU Compiler Collection, containing the GNU C compiler
+ G++: A C++ compiler, included as part of GCC
+ GDB: A source code–level debugger
+ GNU make: A version of UNIX make
+ Bison: A parser generator compatible with UNIX yacc
+ bash: A command shell
+ GNU Emacs: A text editor and environment

2. Programming Linux
2.1 Linux Programs
Các file nhị phân đặt trong các thư mục được đặt tên là bin hoặc sbin
+ /bin và /sbin : chương trình của system
+ /usr/bin : chương trình của users
+ /usr/local/bin : chương trình của users, thường do người dùng install thêm vào

Nếu các chương trình không được installed trong các thư mục bin mặc định như trên thì bạn cần khai báo thêm thư mục chứa chương trình vào biến môi trường PATH.

 [ninhld@localhost ~]$ echo $PATH  
 /usr/lib64/qt-3.3/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/ninhld/.local/bin:/home/ninhld/bin  
 [ninhld@localhost ~]$   
 [ninhld@localhost ~]$ export PATH=/path/to/newbin:$PATH  
 [ninhld@localhost ~]$ echo $PATH  
 /path/to/newbin:/usr/lib64/qt-3.3/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/ninhld/.local/bin:/home/ninhld/bin  

2.2 Text Editors
+ QT Creator
+ Eclipse
+ Geany

2.3 The C Compiler
+ GCC
+ G++

Note: Compiler chia làm hai loại
+ Native Compiler: biên dịch ra chương trình chạy trên máy tính (x86, amd)
+ Cross Compiler: biên dịch ra chương trình chạy trên các hệ thống nhúng dùng các chip ARM, Power PC, ...

2.4 Library Files
Một chương trình hoàn chỉnh thường gồm hai phần:
+ file nhị phân
+ file thư viện

Như đã nêu trên mục 2.1, file nhị phân thường được để trong các thư mục được đặt tên là bin hoặc sbin; cũng tương tự các thư viện thường được đặt trong các thư mục đặt tên là lib sao cho tương ứng với các file nhị phân trong các thư mục bin:
+ /lib  : thư viện của system
+ /usr/lib : thư viện của users
+ /usr/local/lib : thư viện của users, thường do người dùng install thêm vào

Xem thêm Library.

2.5 Header Files
Các file header chỉ tham gia vào quá trình biên dịch  để tạo ra chương trình mà thôi, còn khi chạy chương trình chỉ có sự tham gia của file nhị phân và file thư viện.
File header thường được đặt trong các thư mục có tên là include:
+ /usr/include
+ /usr/local/include

Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © Lập trình hệ thống nhúng Linux . Powered by Luong Duy Ninh -