如何用arm-linux-gcc编译驱动程序,Makefile文件怎么写?
这个没有什么特殊的要求。你只要按照你需要的正确的语法规则和编译顺序,将 gcc 编译器对 C 语言源程序的编译选项(例如:对源程序只编译不连接的选项为:-c、或者是生成指定的运行文件:-o my_outputfile,等等)写到 makefile 文本文件中即可。 但是一定要注意它们之间在 makefile 文件之间的前后顺序。
虚拟机上的Linux系统怎么安装gcc编译器?
如果Linux服务器能够上网的话,使用 yum命令安装安装gcc yum install gcc 安装g++ yum install gcc-c++如果是纯手工安装RPM包的话,比较繁。要依赖包一个一个安装上去,最后再安装gccrpm -ivh kernel-headers-2.6.32-431.el6.x86_64.rpmrpm -ivh glibc-headers-2.12-1.132.el6.x86_64.rpmrpm -ivh glibc-devel-2.12-1.132.el6.x86_64.rpmrpm -ivh libgomp-4.4.7-4.el6.x86_64.rpmrpm -ivh ppl-0.10.2-11.el6.x86_64.rpmrpm -ivh cloog-ppl-0.15.7-1.2.el6.x86_64.rpmrpm -ivh mpfr-2.4.1-6.el6.x86_64.rpmrpm -ivh cpp-4.4.7-4.el6.x86_64.rpmrpm -ivh gcc-4.4.7-4.el6.x86_64.rpm
gcc四个阶段?
GCC 编译可以分为4个阶段:预处理(pre-processing)、编译(compiling)、汇编(assembling)、链接(linking)。
一、预处理阶段 gcc -E hello.c -o hello.i
GCC预处理阶段第一个主要完成的工作是头文件展开,例如一开始#include <stdio.h>,那么预处理阶段就会把这个stdio.h文件加载到你的.c中去,这边还有一个要注意的是#include "stdio.h" 和 #include <stdio.h> 的区别,<>这个尖括号符号代表的意思是让程序在预处理阶段加载文件的时候到预定义的缺省路径下寻找该文件,那缺省路径是什么呢?在LINUX下可以使用 echo | gcc -E -v – 来显示出include包含的路径
二、编译阶段 gcc -S hello.i -o hello.s
gcc在编译阶段进行代码的规范性检查以及代码是否有语法错误,如果没有就生成.s汇编文件。关于汇编本人表示也不太会,如果有兴趣的读者可以自己搜索其他相关文章学习汇编语言。
三、汇编阶段 gcc -c hello.s -o hello.o
将编译生成的汇编文件转换成二进制代码文件.o文件。
四、链接阶段 gcc hello.c -o hello.exe
一旦完成这个阶段就会直接生成一个可执行文件。那么链接阶段到底干了什么呢?
我们都知道预处理的时候虽然加载了stdio.h,但是这个头文件里面全都是一些声明,并没有具体的代码实现,例如调用了printf函数的时候,stdio.h里面没有实现代码,所以链接阶段主要的工作就是链接所需要的函数库。printf这个函数是在libc.so.6这个库里面,所以链接阶段gcc编译器会链接到这个库,所以就实现了这个函数的调用。