首页 > 系统相关 >linux下C编写及编译、运行

linux下C编写及编译、运行

时间:2023-04-19 12:46:11浏览次数:35  
标签:架构 CPU 编译 编译器 指令 linux 编写 ARM

一、简介      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

相关文章

  • Linux常用命令总结
    无论是后端程序员还是前端程序员,一定避免不了和Linux系统打交道。可能是自己在学习的时候搭建虚拟机环境,也可能是在公司测试环境进行服务的维护,甚至可能去线上服务器进行生产问题的排查。这就要求我们要熟练使用Linux命令行,相关的常用命令很可能不经常使用就忘了,这里我收集了一些......
  • 编写你的第一个 Django 应用程序,第4部分
    本教程从教程3 停止的地方开始。我们是继续民意调查应用程序,并将专注于表单处理和减少我们的代码。一、编写最小表单让我们更新上一个教程的投票详细信息模板(“polls/detail.html”),以便模板包含一个HTML <form>元素:<formaction="{%url'polls:vote'question.id%}"......
  • Linux apt-get vs apt All In One
    Linuxapt-getvsaptAllInOneapt-getaptdemos(......
  • linux操作--10
    升级Linux内核无快照情况下的备份与回复采用dump与restore指令,指令可能不存在需要自己安装,安装指令如下dump使用方法restore恢复......
  • 在线Cron表达式生成/Linux Cron
    https://cron.qqe2.com/https://www.runoob.com/linux/linux-comm-crontab.html 022**6 ......
  • linux常用命令随笔
    1.linux-centos7的目录结构/:centos7的根目录bin:脚本目录--包含很多linux命令sbin:命令目录--包含linux的命令etc:配置目录--可以配置很多参数--IP地址,环境变量配置root:它是root用户的目录usr:用户安装软件的目录----等价于window中programfilestmp:缓存--临......
  • LInux单机部署ELK日志收集
    LInux单机部署ELK日志收集一、环境准备centos7cpu:1核内存:8G#安装vim,wget,net-tools设置主机名:vim/etc/hosts127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4::1localhostlocalhost.localdomainlocalhost6localhost6.local......
  • Linux 虚拟机服务器安装 Redis (sentinel模式)
    虚拟机服务器准备阶段三台服Linux虚拟机IP分别为192.168.192.133(作为master节点)192.168.192.129(作为slave节点)192.168.192.132(作为slave节点)我的三台虚拟机服务器版本均为centos7,且均为最小化安装,所以少很多软件,比如安装redis时需要gcc编译器、python环境等。......
  • Arch Linux关机缓慢
    问题描述:ArchLinux关机、重启时非常缓慢,基本都是十分钟以上。问题原因:参照GitHub中发现是nouveau导致的关机缓慢。解决办法:尝试了网络上普遍的把nouveau加入黑名单,但是并没有解决。最终是在grub中禁用nouveau解决。sudovim/etc/default/grub在GRUB_CMDLINE_LINUX_DEFA......
  • linux-nexus
    nexus一、概述背景:maven编译的时候,npm/cnpm编译,需要下载大量的依赖包。这些依赖包在每一次构建的时候都需要使用。每次都从公网(maven阿里云)npm(国内)。可以搭建内部软件仓库:存放着依赖包这个软件依赖仓库可以通过nexus实现。二、极速部署指南https://www.sonatype.c......