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
", c);
}

汇编语言简介

汇编语言(assembly language)是一种用于电子计算机微处理器微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

执行效率

c效率最高 c++其次

vs反汇编

先f9 设置断点

再f5调试 窗口 反汇编

 
3.编译 (-C)
  gcc -C -o D.o  C.c
  将代码编译为二进制的机器指令

4链接

  gcc  -o  d  D.0

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

   gcc 没有任何参数代表链接

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

man gcc查看详细参数

原文地址:https://www.cnblogs.com/long613/p/7615523.html