文档章节

Linux使用gcc进行编译

熊猫88
 熊猫88
发布于 2016/01/29 10:14
字数 524
阅读 48
收藏 2

                  
   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
博文 76
码字总数 65287
作品 0
程序员
arm-linux-gcc 常用参数讲解 gcc编译器使用方法

我们需要编译出运行在ARM平台上的代码,所使用的交叉编译器为 arm-linux-gcc。下面将arm-linux-gcc编译工具的一些常用命令参数介绍给大家。 在此之前首先介绍下编译器的工作过程,在使用GCC...

小猴纸
2013/01/04
0
0
Linux编译安装中configure、make和make install各自的作用

这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤。 ./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。...

Surjur
2014/11/27
0
0
CentOS6.6编译安装GCC-5.2.0

CentOS6.6编译安装GCC-5.2.0 Linux下编写C/C++程序自然缺不了一个优秀的编译器,Linux下比较常见的自然是GCC了。 2015年GCC也出到了5.2.0版本,对于C++11/14也有了更好的支持了。 所以,今天...

zhusas
07/04
0
0
configure/make/make install的作用

这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤。 ./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC, 并不是需要CC或GCC,它是个shell脚本...

j_m
2012/07/10
0
0
【转】Msys/MinGW与Cygwin/gcc

一 MinGW MinGW 官方网站为 http://www.mingw.org/ MinGW,即 Minimalist GNU For Windows(GCC compiler suite)。它是一些头文件和端口库的集合,该集合允许人们在没有第三方动态链接库的情...

mj4738
2012/01/21
0
1

没有更多内容

加载失败,请刷新页面

加载更多

js 操作cookie

var cookie = {// 设置cookie方法 set:function(key,val,time){ var date = new Date(); //获取当前时间 var expiresDays = time; //将date设置为n天以后的时间...

小丶二
1分钟前
0
0
限制root远程登录 su和sudo命令

9月21日任务 3.7 su命令 3.8 sudo命令 3.9 限制root远程登录 对于Linux而言,权限的重要性毋庸置疑!对于普通用户而言无法执行那些只有root用户才能有效的命令,导致工作无法有效进行; 系统...

robertt15
3分钟前
0
0
MQTT协议的初浅认识之通讯级别和持久会话

背景 这是我最近了解MQTT协议的最后一部分内容了,MQTT协议里面的QOS和Keep Alive是两个比较重要的内容。QOS的设置,直接影响了订阅客户端与中间件之间的消息交互行为。而Keep Alive直接影响...

亚林瓜子
5分钟前
0
0
calc

width: calc(100% - 30px); 特别注意:减号左右空格,均不能去掉。 width: calc(100% - 30px);

柴高八斗之父
13分钟前
0
0
Spring Cloud Gateway全局过滤器GlobalFilter:返回消息和重定向

Spring Cloud Gateway的全局过滤器GlobalFilter,顾名思义,声明后会对所有的请求生效,可以用来做权限控制,这里简单记录一下拦截到非法请求后如何返回自定义信息和将请求重定向到指定URL。...

夜雨寄北09
15分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部