Compiler là gì

Trình biên dịch, nói một cách khác làphần mềm biên dịch,compiler, là mộtlịch trình thứ tínhlàm quá trình dịch một chuỗi các câu lệnh được viết bằng mộtngôn ngữ lập trình(điện thoại tư vấn làngôn ngữ nguồnhaymã nguồn), thành một chương trình tương tự cơ mà sinh sống dưới dạng mộtngôn từ trang bị tínhnew (hotline làngôn ngữ đích) với hay là ngữ điệu ngơi nghỉ cấp thấp rộng, nhỏng ngôn từ sản phẩm công nghệ. Chương trình mới được 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 công tác bao gồm thực hiện thỏng viện toán học math mang lại hàm cos(x), vậy vào quy trình Linker vẫn tiến hành rước mã của hàm printf() trong tlỗi viện để kết phù hợp với mã thường thì khác.

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

Đang xem: Compiler là gì

*

3. Cross Compiler /Toolchain là gìCross Compiler xuất xắc 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 bên trên laptop chạy chíp Hãng Intel (x86 platform), thông sang một cross compiler đã cho ra file nhị phân (mã máy) có công dụng chạy được trên một nên tảng chip khác là ARM (ARM platform). Trên hình native compiler là trình biên dịch để tạo nên tệp tin nhị phân chạy trên bao gồm máy tính đã dùng để làm viết source code.

*

Quá trình tạo thành và sử dụng tool chain liên quan cho 3 đối tượng:+ Build : là hệ thống/platkhung tạo thành tool chain, thường là những máy tính xách tay chạy căn cơ chip Hãng sản xuất Intel x86, x84_64 chạy hệ điều hành và quản lý Linux hoặc Windows.

Xem thêm:

+ Host: là hệ thống chạy lịch trình tool chain để compile source của một chương trình ứng dụng nào đó, host cũng tương tự Build, thường xuyên là các máy tính xách tay Hãng Intel chạy Linux hoặc Windows OS+ Target: là khối hệ thống chạy những chương trình (bên dưới dạng tệp tin nhị phân – mã máy) do hệ thống Host tạo thành, target thường xuyên là những khối hệ thống nhúng chạy chip ARM, MIPS, PowerPC, …; tuy vậy target cũng hoàn toàn có thể là 1 laptop thông thường chạy chip Hãng Intel.

Xem thêm:

VD:BUILD=x86HOST=x86TARGTE=arm-linux5. Các yếu tố của compiler

*

+ BinutilsLà một tập các qui định để tạo thành cùng quản lý file nhị phân (bin) của target CPUas: là assembler, nó có mặt mã nhị phân (binary code) trường đoản cú assembler source codeld: trình liên kết (linker)ar, ranlib : hình thành tệp nén .a, áp dụng như là thư việnobjdump, readelf, kích thước, nm, strings: phân tích file nhị phânstrip : để sa thải số đông phần thừa trong file nhị phân nhằm giảm form size của chúngĐôi khi nhằm cross-compiler một chương trình ta yêu cầu setup đổi mới môi trường new có thể compile đúng được export PATH=/path/to/compiler/bin:$PATH #băng thông mang lại tlỗi 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 có tác dụng interface giữa applications cùng kernel, cung cấp những C API chuẩn chỉnh nhằm thuận lợi cải cách và phát triển vận dụng. Một số libb rất có thể kể đến như:glibc, uClibc, eglibc, dietlibc, newlib, …

Kernel header cần thiết mang đến Applications và C Library để hỗ trợ các API giao tiếp cùng với Kernel.+ GCC compilergcc, c++, g++: compilerTrình biên dịch trong hệ thống Linux, compile đến không hề ít ngôn ngữ và những phong cách thiết kế CPU khác biệt như ARM, MIPS, PowerPC, SuperH, x86; tuy vậy trong blog này chỉ đề cùa đến ngôn từ C/C++ và phong cách xây dựng CPU là ARM với x86.+ GDB DebuggerTrình gỡ rối, trợ hỗ trợ 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 nhắc đếnGCC Compiler(gcc bên trên host-x86 và cross gcc đến target-ARM), những compiler được các nhà sản xuất chip làm nên cùng phân păn năn mang đến các quý khách thông qua trang web của hãng sản xuất.Một số dòng chip thịnh hành dựa trên bản vẽ xây dựng ARM giỏi MIPS thường dễ dãi có được cross-compiler bên trên một số công ty hỗ trợ miễn phí nhưSourceryhayLinaro.GCC phân tách compiler ra có tác dụng 2 phần, gcc là compiler đến C source với g++ đến C++ source, mặc dù cũng hoàn toàn có thể g++ nhằm compile C source bình thường.Trên Fedora bạn cũng có thể setup compiler thông qua lệnh sau:yum install gcc g++Tham mê khảo thêm mục Linux Development tại phía trên. 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 #sinh sản file object từ source $gcc -o prog main.o $LDFLAGS #sản xuất tệp tin công tác nhị phân từ 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 tệp tin chương trình nhị phân từ bỏ tệp tin object Phía bên trên là format thông thường / cơ bạn dạng tuyệt nhất của GCC compiler+ CFLAGS / CXXFLAGSC Compiler Flags và C++ preprocessor flags để pass những options vào vào compiler để tiến hành quy trình compile sourcecode -> object, có các thông tin: – Đường dẫn các tệp tin header, bước đầu cùng với “-I”, ví dụ: -I./include – Các define được ban đầu cùng với “-D”; ví dụ: -DDEBUG, define DEBUG – Các options quánh biết khác của compiler; ví dụ: -g (enable chức năng debug gdb của gcc compiler, -Wall (trace những warning vào quy trình compile)+ LDFLAGSLinker flags, dùng trong quá trình linking các thư viện, LDFLAGS cất những thông tin: – Đường dẫn cho thư viện, được bắt đầu bởi “-L”; ví dụ: -L./lib – Các thư viện, bắt đầu với “-l”, là viết tắt của lib; ví dụ: -lm tương xứng với libm, thư viện toán thù học, tất cả sẵn vào hệ thống+ gccCompiler mang lại C source+ g++Compiler mang đến C++ source


Chuyên mục: Tổng Hợp