一、简介 Windows 下我们可以使用各种各样的 IDE 进行编程,这些IDE很多都可以直接编译运行。但在 Linux下这两部分是分开的,大多只是编辑器(如Vim),如果要编译的话就需要用到 GCC 编译器,使用 GCC 编译器肯定就要接触到 Makefile。 二、代码编写 1、设置Vi:其TAB键默认跳转8个空格,并且默认不显示行号,我们C编辑常用4个字节,因此需要做如下设置。打开文件/etc/vim/vimrc,在该文件最后输入代码:set ts=4 再起一行输入 : set nu即可。 2、编辑代码:新建一个.C文件,使用vim打开,或使用vi +文件名新建并打开,此时为指令模式,我们输入i指令进入编辑模式,编辑完成按ESC进入指令模式,然后输入冒号,q退出,w保存,wq保存退出。 三、代码编译 1、gcc简介:Ubuntu 下的 C 语言编译器是 GCC,我们 安装Ubuntu 的时候会默认安装,通过 gcc -v 可查看版本号。也可以看到该编译器可编译的目标对象:x86_64-linux-gnu,表示Ubuntu自带的编译器是针对X86架构的,编译的可执行文件只能运行于X86架构的CPU,如果想要编译在ARM架构上运行的程序就需要安装针对ARM架构的GCC编译器,俗称交叉编译器。
2、gcc编译代码:gcc main.c 编译完成后默认生成a.out 的可执行文件,执行方法:“./+可执行文件”。使用-o 可指定生成的可执行文件名字:gcc main.c -o main
(1)、编译流程:预处理、编译、汇编和链接。预处理就是展开所有头文件、替换程序中的宏、解析条件编译并添加到文件中。编译是将经过预编译处理的代码编译成汇编代码,也就是我们常说的程序编译。汇编就是将汇编语言文件编译成二进制目标文件。链接就是将汇编出来的多个二进制目标文件链接在一起,形成最终的可执行文件,链接的时候还会涉及到静态库和动态库等问题。
四、Makefile
1、简介:
五、X86架构和ARM架构的区别
1、简介:CPU只能在给定具体指令的情况下才能工作,不同架构的CPU能够识别的指令集不同。移动端及一些嵌入式系统上的应用并不是直接通过编写CPU指令来运行的,而是通过编程语言来编写的,编译器的目的就是将程序编译成不同指令集的指令,从而在ARM, X86等不同架构的CPU上运行。指令集就相当于软件和硬件之间的桥梁。
2、本质区别:(1)、X86架构——复杂指令集:电路单元丰富,指令丰富,处理特殊任务效率高,缺点:面积大、功耗高;
(2)、ARM架构——32位精简指令集(指令数有限):广泛运用于嵌入式系统,电路单元相对较少,制造工艺简单,功耗低(适用于移动通讯领域,便携式电子产品手机平板等),但实现复杂功能效率低(使用多个指令组合实现),ARM 公司本身并不制造 CPU ,而是将处理器架构授权给厂商。
3、性能:X86结构比ARM结构的系统在性能方面要强得多。其CPU随便就是1G以上、双核、四核等等、而ARM结构的CPU通常才几百兆,最近才出现1G左右的。
4、操作系统兼容性:几乎所有x86硬件平台都可以直接使用微软的视窗系统及现在流行的几乎所有工具软件;ARM系统几乎都采用Linux的操作系统,GOOGLE开发了开放式的Android系统后,才为ARM的发展提供了强大的支持和动力。
除此之外,还有一些其他架构的处理器,这里不再赘述。
标签:架构,CPU,编译,编译器,指令,linux,编写,ARM From: https://www.cnblogs.com/gengtongyu/p/17332297.html