1.嵌入式C语言编译器
1.1 GCC与gcc
上述两者的区别:
GCC(GUN Compiler Colletion),是指GUN编译器集合包含众多语言得到编译器如C语言(gcc),C++(g++),Java语言(jdk)、D语言(gdc)、等
gcc 则指的是单纯的C语言编译器
当代的嵌入式开发已经和传统的嵌入式开发不同,硬件性能的提升使其越来越接近桌面开发,使用的开发语言也越来越多样,内核和驱动开发使用C语言,应用开发使用gcc/g++/gdc等。
1.2交叉编译
两种开发模式:
A.非嵌入式开发:A(类)机编写(源代码)、编译得到可执行程序,发布给A(类)机运行。
B.嵌入式开发 :A(类)机编写(源代码)、编译得到可执行程序,发布给B(类)机运行。
为何使用交叉编译
嵌入式产品由于资源受限,不能直接在嵌入式产品上进行编程,所以选择在PC主机上进行源码编写和编译,最终生成在嵌入式设备上运行的程序。
交叉编译可以用高性能机器为低性能机器开发软件(包括裸机软件、系统级和应用级软件)
交叉编译特点:
必须使用专用的交叉编译工具链。由于可执行程序不能本地运行调试,因此必须配合一定手段(专用调试器、JTAG调试器、USB下载、串口下载、SD启动、网络共享等)将可执行程序加载到目标嵌入式设备上运行及调试。
gcc如何进行交叉编译?
配置目标主机的编译工具链(如arm-linux),配置工具链的具体版本。
根据具体的目标代码选择相应的工具链版本
正确使用关于硬件体系结构的特殊编译选项