文档章节

Linux使用gcc进行编译

熊猫88
 熊猫88
发布于 2016/01/29 10:14
字数 524
阅读 43
收藏 2
点赞 1
评论 0

                  
   GCC可以将写成的C语言代码编译成为可执行文件。这里简单使用GCC编译器编译一个C语言文件。
   这里暂时用到俩个参数,gcc  -c 只编译源文件但不连接,会把.c和.cc的源程序变成目标文件
   gcc  -o  用于指定输出(out)文件名。不用-o的话,会在当前文件夹下生成默认的文件作为可执行程序。
   gcc编译过程是先把源文件(.c)编译成汇编码(.s),再把汇编码汇编成目标代码(.o),再链接成可执行程序(ELF)。(.o)是目标代码,已经是二进制的机器码了,所以用文本编辑器看会乱码。但还不能执行,还要链接才能执行。
   先在Linux下写个简单的hello  world
   下个简单的C语言文件hello.c(可以直接用vim进行敲代码)
   #include <stdio.h>
    int main(void)
   {
    printf("Hello World!\n");
    return 0;
    }
    C语言的定义比PHP要严格很多,这里仅仅作为演示。
    gcc  hello.c  -o  hello  
    把hello.c编译成可以执行文件hello
    然后./hello  (执行当前文件夹下的hello程序)
    如果切换到外层目录test  可以直接用  test/hello 就可以直接看到运行
    hello  world的结果。
   
   因为PHP的底层是C编写,要深入了解PHP,需要对C的基础语法做个整理:
1.标准库
#include <stdio.h>          :标准输入输出文件库
#include <stdlib.h>:标准文件操作库
#include <string.h>:字符处理函数库
2.每个程序里有个main()
 int  main()
 {
  int  a = 1;
  int   b = 2;
  int   sum =0;
 sum = func(a,b);
printf("%d",c);
 return 0;
 }
 int   func(int val1,int val2) {
  return  val1+val2;
 }
打包编译后,就可以打印出对应的val1和val2的值
特点:强类型,每个函数的返回值都需要定义,使用的每个变量也需要预先定义类型,否则是无法使用的。

© 著作权归作者所有

共有 人打赏支持
熊猫88
粉丝 18
博文 63
码字总数 65287
作品 0
程序员
linux下编译代码时的默认头文件路径

1 应用编程、驱动源代码中的头文件 1.1 应用编程中包含的头文件是应用层的头文件,是应用程序的编译器带来的 1.1.1 编译windows下的应用程序时 1)使用<>包含的头文件一般会先搜索-I选项后的...

qq_40334837 ⋅ 05/06 ⋅ 0

激光雷达学习笔记(六)ARM-Linux平台算法移植

在写第一篇激光雷达的日志我就说,激光雷达的算法开发的最终的目标是移植到嵌入式设备上, 因为在机器人定位时,不可能用一个很大很重的设备,因此最理想的还是ARM平台,(工控机也可以 考虑...

dddxxxx ⋅ 05/11 ⋅ 0

Redis简介及Linux安装Redis

前言 本文主要内容: 1、简介redis,及使用的一些场景 2、linux安装redis 1、什么是Redis? redis是一个基于C语言编写的,支持网络,也可基于内存亦可持久化的日志型,Key-Value的数据库,提供...

LoveQueena ⋅ 05/12 ⋅ 0

Linux 安装指定版本GCC方法

转载自https://blog.csdn.net/liboyang71/article/details/77152577 今天来记录一下如何安装指定版本gcc,因为在linux中有些软件需要指定gcc的版本,所以记录一下还是很有必要的。好了,直接...

qq_33438733 ⋅ 04/18 ⋅ 0

如何在 Linux 中不安装软件测试一个软件包

出于某种原因,你可能需要在将软件包安装到你的 Linux 系统之前对其进行测试。如果是这样,你很幸运!今天,我将向你展示如何在 Linux 中使用 Nix 包管理器来实现。Nix 包管理器的一个显著特...

10% ⋅ 06/18 ⋅ 0

如何在 Linux 中不安装软测试一个软件包

出于某种原因,你可能需要在将软件包安装到你的 Linux 系统之前对其进行测试。如果是这样,你很幸运!今天,我将向你展示如何在 Linux 中使用 Nix 包管理器来实现。Nix 包管理器的一个显著特...

10% ⋅ 06/16 ⋅ 0

编译iw工具报错(已编译好依赖的libnl库)

我已经编译好了libnl库,并且将库和头文件都放入了工具链中(arm-none-linux-gnueabi/libc的armv4t的lib和usr的include中)。但是编译后,还是报了没编译libnl库之前的错。如下: 但是,我反...

坚强的程序员 ⋅ 05/20 ⋅ 0

初识GCC——关于GCC编译器的相关语法与介绍

一个C文件要变成可执行的文件,需要经过四个过程: 预处理(处理以“#”为开头的命令) 编译(将.c .i等文件翻译成汇编代码) 汇编(将汇编代码翻译成机器代码) 连接(将生成的多个目标文件...

HelloRookie ⋅ 06/20 ⋅ 0

xilinx-arm-linux交叉编译链安装

首先,说明为什么要装xilinx-arm-linux编译链,因为要使用Xilinx的Zedboard开发:需要在Linux系统上面,使用xilinx-arm-linux交叉编译链,编译C文件,将编译后的文件拷贝到Zedboard即可。安装...

weixin_40651304 ⋅ 04/17 ⋅ 0

Centos6.5升级gcc4.4.7升级gcc4.7.0

由于要使用xtrabackup进行mysql的物理备份,在使用过程中报错:version `GLIBCXX_3.4.15' not found (required by ./xtrabackup)。该错误的原因是当前的GCC版本中,没有GLIBCXX_3.4.15,需要安...

goldfishe ⋅ 04/19 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

如何解决s权限位引发postfix及crontab异常

一、问题现象 业务反馈某台应用服务器,普通用户使用mutt程序发送邮件时,提示“postdrop warning: mail_queue_enter: create file maildrop/713410.6065: Permission denied”,而且普通用法...

问题终结者 ⋅ 29分钟前 ⋅ 0

Unable to load database on disk

由于磁盘空间满了以后,导致zookeeper异常退出,清理磁盘空间后,zk启动报错,信息如下: 2018-06-25 17:18:46,904 INFO org.apache.zookeeper.server.quorum.QuorumPeerConfig: Reading co...

刀锋 ⋅ 48分钟前 ⋅ 0

css3 box-sizing:border-box 实现div一行多列

<!DOCTYPE html><html><head><style> div.container{ background:green; padding:10px 10px;}div.box{box-sizing:border-box;-moz-box-sizing:border-box; /* Fir......

qimh ⋅ 54分钟前 ⋅ 0

Homebrew简介和基本使用

一、Homebrew是什么 Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径...

说回答 ⋅ 今天 ⋅ 0

文件压缩和打包zip、tar

第六章 文件压缩和打包 6.5 zip压缩工具 zip命令可以用来解压缩文件,或者对文件进行打包操作。zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。 注意:...

弓正 ⋅ 今天 ⋅ 0

vuex

一、状态对象如何赋值给内部对象。三种方式: 1、使用computed赋值,一定要写this,不然找不到$store。 computed:{ count(){ return this.$store.state.count; }} 2、通...

大美琴 ⋅ 今天 ⋅ 0

javaScript 设计模式

1、构造函数模式 ` /** 构造一个动物的函数 */ function Animal(name, color){ this.name = name; this.color = color; this.getName = function(){ return this.name; } } // 实例一个对象 ......

fangPeng_ ⋅ 今天 ⋅ 0

日常嘚瑟:TeamCity构建中解压和打包tar

要弄一个新的构建,很简单,从两个构建的tar格式Artifact中分别取一部分,重新打一个tar。 所以,我去写个脚本用curl下载两个依赖的Artifact,然后解压移动重新打个tar? 开什么玩笑,我的技...

谷永权 ⋅ 今天 ⋅ 0

Istio官方文档中文版

阅读目录 Istio官方文档中文版 回到目录 Istio官方文档中文版 http://istio.doczh.cn/ https://istio.io/docs/concepts/what-is-istio/goals.html 为什么要使用Istio? 在从单体应用程序向分...

xiaomin0322 ⋅ 今天 ⋅ 0

CentOS 7 Omnibus 包安装 GitLab 并汉化记录

系统环境 操作系统:CentOS 7GitLab:gitlab-ce-10.8.4-ce.0.el7.x86_64.rpm 下载Omnibus安装包 使用国内镜像加速下载地址 # wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el......

admin_qing ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部