Compiler là gì

  -  

Trình biên dịch, còn gọi làứng dụng biên dịch,compiler, là mộtcông tác đồ vật tínhlàm các bước dịch một chuỗi các câu lệnh được viết bằng mộtngữ điệu lập trình(call làngữ điệu nguồnhaymã nguồn), thành một lịch trình tương tự tuy thế sống dưới dạng mộtngôn từ trang bị tínhmới (hotline làngữ điệu đích) và hay là ngôn từ làm việc thấp cấp rộng, như ngữ điệu máy. Chương trình mới được chất dịch này gọimã đối tượng người dùng. 2. Quá trình biên dịch

*

#include #include #define PI 3.14 int main(int argc, char **argv) float x, y; x = PI / 3; y = cos(x); printf(“gia tri cos(%f) = %f“, x, y); return 1; Trong lịch trình bao gồm sử dụng tlỗi viện tân oán học tập math cho hàm cos(x), vậy vào quá trình Linker đã thực hiện đem mã của hàm printf() vào tlỗi viện để kết hợp với mã thông thường khác.

Bạn đang xem: Compiler là gì

Đang xem: Compiler là gì

*

3. Cross Compiler /Toolchain là gìCross Compiler tuyệt còn gọi là Toolchain được định nghĩa:Across compileris acompilercapable of creatingexecutablecode for aplatformother than the one on which the compiler is running. For example, a compiler that runs on aWindows 7PCbut generates code that runs onAndroidsmartphoneis a cross compiler

*

tức là source code được viết trên máy tính chạy chíp Hãng sản xuất Intel (x86 platform), thông qua một cross compiler đã đã tạo ra file nhị phân (mã máy) có khả năng chạy được bên trên một buộc phải tảng chip khác là ARM (ARM platform). Trên hình native compiler là trình biên dịch nhằm tạo nên file nhị phân điều khiển xe trên chủ yếu máy vi tính đang dùng để làm viết source code.

*

Quá trình tạo nên cùng sử dụng tool chain tương quan đến 3 đối tượng:+ Build : là hệ thống/platform tạo thành tool chain, thường là những laptop chạy nền tảng chip Intel x86, x84_64 chạy hệ quản lý điều hành Linux hoặc Windows.

Xem thêm: Cao Độ Trong Xây Dựng Tiếng Anh Là Gì, Cốt Nền Xây Dựng Tiếng Anh Là Gì

+ Host: là khối hệ thống chạy chương trình tool chain nhằm compile source của một lịch trình áp dụng làm sao kia, host cũng như Build, thường là các laptop Intel chạy Linux hoặc Windows OS+ Target: là hệ thống chạy những chương trình (dưới dạng file nhị phân – mã máy) do khối hệ thống Host tạo thành, target hay là những hệ thống nhúng chạy chip ARM, MIPS, PowerPC, …; tuy vậy target cũng rất có thể là 1 máy tính bình thường chạy chip Hãng sản xuất Intel.

Xem thêm: Cách Phân Biệt Vàng Trắng - Cách Nhận Biết Vàng Trắng Thật Hay Giả

VD:BUILD=x86HOST=x86TARGTE=arm-linux5. Các nhân tố của compiler

*

+ BinutilsLà một tập các lý lẽ để sinh sản cùng quản lý file nhị phân (bin) của target CPUas: là assembler, nó xuất hiện mã nhị phân (binary code) từ assembler source codeld: trình link (linker)ar, ranlib : hiện ra tệp ZIP đã được nén .a, sử dụng như thể tlỗi việnobjdump, readelf, kích thước, nm, strings: đối chiếu file nhị phânstrip : để loại trừ phần đa phần quá trong tệp tin nhị phân nhằm giảm kích cỡ của chúngthường thì để cross-compiler một công tác ta phải thiết lập trở nên môi trường mới có thể compile đúng được export PATH=/path/to/compiler/bin:$PATH #đường dẫn mang lại thư mục chứa as, ld, … export CROSS_COMPILE=arm-none-linux-gnueabi- export CC=$CROSS_COMPILEgcc export CXX=$CROSS_COMPILEg++ export CPP=$CROSS_COMPILEcpp export AR=$CROSS_COMPILEar export AS=$CROSS_COMPILEas export LD=$CROSS_COMPILEld export RANLIB=$CROSS_COMPILEranlib export STRIP=$CROSS_COMPILEstrip Library được sử dụng làm interface giữa applications cùng kernel, cung ứng những C API chuẩn để thuận tiện phát triển ứng dụng. Một số libb rất có thể nói tới như:glibc, uClibc, eglibc, dietlibc, newlib, …

Kernel header cần thiết mang lại Applications cùng C Library để hỗ trợ các API tiếp xúc cùng với Kernel.+ GCC compilergcc, c++, g++: compilerTrình biên dịch vào khối hệ thống Linux, compile đến không hề ít ngôn từ và nhiều bản vẽ xây dựng CPU không giống nhau nlỗi ARM, MIPS, PowerPC, SuperH, x86; tuy nhiên vào blog này chỉ đề cập đến ngữ điệu C/C++ với kiến trúc CPU là ARM cùng x86.+ GDB DebuggerTrình gỡ rối, trợ giúp cho quá trình phân phát hiện tại lỗi Khi develop application.6. Cài đặt GCCTrong blog này đề cập đếnGCC Compiler(gcc trên host-x86 cùng cross gcc cho target-ARM), những compiler được các đơn vị phân phối chip tạo nên sự và phân pân hận cho những quý khách hàng thông qua website của hãng.Một số chiếc chip thông dụng dựa vào phong cách xây dựng ARM hay MIPS thường xuyên thuận lợi đã có được cross-compiler bên trên một trong những nhà cung cấp miễn giá thành nhưSourceryhayLinaro.GCC phân tách compiler ra làm cho 2 phần, gcc là compiler mang đến C source cùng g++ mang lại C++ source, mặc dù cũng có thể g++ nhằm compile C source bình thường.Trên Fedora chúng ta cũng có thể setup compiler thông qua lệnh sau:yum install gcc g++Tmê mệt khảo thêm mục Linux Development trên đây. 7. Cú pháp của GCC CompilerXét ví dụ:main.c / main.cpp #include #include int main(int argc, char **argv) double x; x = sqrt(4); printf(“x = %f“, x); return 1; Terminal command: $export CFLAGS=”-I./include -DDEBUG -Wall -g” $export LDFLAGS+=” -L./lib -lm” $gcc -c main.c $CFLAGS #chế tác file object tự source $gcc -o prog main.o $LDFLAGS #tạo thành file công tác nhị phân từ bỏ tệp tin object hoặc $export CXXFLAGS=”-I./include -DDEBUG -Wall -g” $export LDFLAGS+=” -L./lib -lm” $g++ -c main.cpp $CXXFLAGS #chế tác tệp tin object từ source $g++ -o prog main.o $LDFLAGS #tạo nên file lịch trình nhị phân từ tệp tin object Phía trên là format bình thường / cơ bạn dạng duy nhất của GCC compiler+ CFLAGS / CXXFLAGSC Compiler Flags và C++ preprocessor flags nhằm pass các options vào vào compiler nhằm thực hiện quy trình compile sourcecode -> object, bao gồm các thông tin: – Đường dẫn những tệp tin header, bắt đầu với “-I”, ví dụ: -I./include – Các define được ban đầu với “-D”; ví dụ: -DDEBUG, define DEBUG – Các options sệt biết khác của compiler; ví dụ: -g (enable tính năng debug gdb của gcc compiler, -Wall (trace những warning vào quá trình compile)+ LDFLAGSLinker flags, sử dụng vào quy trình linking những thư viện, LDFLAGS cất các thông tin: – Đường dẫn mang lại tlỗi viện, được bắt đầu bởi “-L”; ví dụ: -L./lib – Các thư viện, bước đầu với “-l”, là viết tắt của lib; ví dụ: -lm khớp ứng với libm, thư viện tân oán học, có sẵn vào hệ thống+ gccCompiler mang lại C source+ g++Compiler đến C++ source