system 系统调用、gcc编译过程

system 库函数的功能是执行操作系统的命令或者运行指定的程序

#include <stdio.h>
#include <stdlib.h>//引入库
int main()
{
    //system("notepad");//打开记事本
    system("dir");//查看目录
  system("ipconfig");查看ip
    return 0;

}

多线程

pthread_create

thread_create

POSIX标准

POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称,其正式称呼为IEEE 1003,而国际标准名称为ISO/IEC 9945。

POSIX标准意在期望获得源代码级别的软件可移植性。换句话说,为一个POSIX兼容的操作系统编写的程序,应该可以在任何其它的POSIX操作系统(即使是来自另一个厂商)上编译执行。

POSIX 并不局限于 UNIX。许多其它的操作系统,例如 DEC OpenVMS 支持 POSIX 标准,尤其是 IEEE Std. 1003.1-1990(1995 年修订)或 POSIX.1,POSIX.1 提供了源代码级别的 C 语言应用编程接口(API)给操作系统的服务程序,例如读写文件。POSIX.1 已经被国际标准化组织(International Standards Organization,ISO)所接受,被命名为 ISO/IEC 9945-1:1990 标准。

gcc的参数

-o 指定生成可执行文件名字

c原因的编译过程

.c文件->预编译 -> 编译  -> 链接->可执行程序

1.预编译(-E)

  1.。加载头文件

      #include 系统文件<头文件> 或者自定义文件 “头文件”两种头文件

  2., 删除注释代码,整理代码

    A.c  原文件

    B.c 预编译完成的文件

    gcc -E -o. B.c A.c

    预编译生成B.c

  

  转化过程(倒回去)

  机器语言->汇编语言->c语言

2.汇编(-S)

  gcc -S -o C.c  B.c

  将c语言转化为汇编语言

  ps ::: c语言中可以嵌套汇编语言代码  

  

#include <stdio.h>
int main()
{
    //c语言代码
    int a, b ,c;
    /*
    a = 1;
    b = 2;
    c = a + b;
    */
    //内嵌汇编代码
    __asm
    {
        mov a , 1
        mov b , 2
        //cpu内的寄存器(计算在寄存器内计算)
        mov eax , a
        add eax , b
        mov c ,eax
    }
    printf("%d\n", c);
}

3.编译 (-C)

  gcc -C -o D.o  C.c

  将代码编译为二进制的机器指令

4链接

  gcc  -o  d  D.0

  D.o与库   生成可执行程序

   gcc 没有任何参数代表链接

  第三方的库(引入库(.so  .dll文件))

man gcc查看详细参数

时间: 2024-10-13 13:00:46

system 系统调用、gcc编译过程的相关文章

gcc 编译过程

gcc 编译过程从 hello.c 到 hello(或 a.out)文件, 必须历经 hello.i. hello.s. hello.o,最后才得到 hello(或a.out)文件,分别对应着预处理.编译.汇编和链接 4 个步骤,整个过程如图 10.5 所示. 这 4 步大致的工作内容如下:(1) 预处理, C 编译器对各种预处理命令进行处理,包括头文件包含.宏定义的扩展.条件编译的选择等:(2) 编译,将预处理得到的源代码文件,进行"翻译转换",产生出机器语言的目标程序,得到机器语言

C/C++学习 - gcc编译过程查看汇编代码

GCC GCC参数 举例 GCC gcc大家都很熟悉,是个编译器,功能强大,全称是:GUN GCC. 平时大家都简单的称为:GCC, 功能强大,能够编译很多的语言.包括:c, c++, java, ada等- GCC参数 gcc平时有很多参数,在平时我编译小程序的时候,都直接gcc -o object source.c就可以了. 但是有一次我想查看我同样目的但是不同写法的两个代码是执行效率上是否有差别.所以我就查了下gcc编译过程中的汇编代码的参数. 参数 说明 -c 只编译不链接,生成*.o文

GCC编译过程与动态链接库和静态链接库

1. 库的介绍 库是写好的现有的,成熟的,可以复用的代码.现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.库有两种:静态库(.a..lib)和动态库(.so..dll). windows上对应的是.lib .dll linux上对应的是.a .so 在这里先介绍下Linux下的gcc编译的几个选项 g++ -c hellospeak.cpp 会将hellospeak.cpp 选

gcc编译过程简述

在linux系统上,从源文件到目标文件的转化是由编译器完成的.以hello.c程序的编译为例,如下: [email protected]: gcc -o hello hello.c 在这里,gcc编译器读取源文件hello.c,并把它翻译成一个可执行文件 hello. 这个翻译过程可分为四个阶段逐步完成:预处理,编译,汇编,链接,如下图所示. 逐步做下简单分析: 在未编译前,hello.c 的源代码如下 #include <stdio.h> int main() { printf("

GCC编译过程

以下是C程序一般的编译过程: gcc的编译流程分为四个步骤,分别为:· 预处理(Pre-Processing) 对C语言进行预处理,生成*.i文件.· 编译(Compiling) 将上一步生成的*.i文件编译生成汇编语言文件,后缀名为*.s· 汇编(Assembling) 将汇编语言文件*.s经过汇编,生成目标文件,后缀名为*.o· 链接(Linking) 将各个模块的*.o文件链接起来,生成最终的可执行文件 示例代码: 1 //hello.c源代码 2 3 #include<stdio.h>

gcc 编译过程及有关命令详解

用gcc编译.c文件流程 1 预处理阶段,输入c的源文件,编译器分析处理源代码文件中的各种宏指令,如"#ifdef,#endif,#include"等,进行去注释,头文件展开,宏替换等操作 .用户可以用 -E 参数让GCC在预处理结束后停止编译过程(gcc -E [source file(.c)] -o [output file(.i)]. 2 编译阶段,从高级语言转换为汇编语言,GCC在预处理后要检查代码规范,是否有语法错误.无误后翻译为汇编语言. GCC 的 -S 选项让GCC在进

Linux系统GCC常用命令和GCC编译过程描述

前言: GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理 C语言.GCC 很快地扩展,变得可处理 C++.后来又 扩展能够支持更多编程语言,如Fortran.Pascal.Objective-C.Java.Ada.Go以及各类处理器架构上的汇编语言等,所以改 名GNU编译器套件(GNU Compiler Collection).(百度百科,想了解自己查询) 一.GCC程序的编译过程大概分四个阶段 预处理(Pre-Processing) 编译(Compil

GCC 编译过程和链接库

GCC 加工程序的过程 在Linux下进行C语言编程,必然要采用GNU GCC来编译C源代码生成可执行程序. 一.GCC使用 Gcc指令的一般格式为:Gcc [选项] 要编译的文件 [选项] [目标文件] 其中,目标文件可缺省,Gcc默认生成可执行的文件名为:a.out 我们来看一下经典入门程序"Hello World!" # vi  main.c #include <stdio.h> void main () { printf("hello world!\n&q

gcc编译过程、C语言编译过程分析、环境变量设置、linux文件夹结构和用途介绍、常用文件和目录的操作命令、文件类型

参考链接:http://www.cnblogs.com/ggjucheng/archive/2011/12/14/2287738.html http://blog.csdn.net/novrose/article/details/7670477 http://blog.sina.com.cn/s/blog_7d5d42b40100ulqn.html 一.大小写后缀的区别 .s     汇编语言源程序;汇编.S     汇编语言源程序;预处理,汇编 小写的s文件,在后期阶段不在进行预处理操作,所以