system 系统调用、gcc编译过程

摘要:
POSIX标准旨在实现源代码级别的软件可移植性。换句话说,为POSIX兼容操作系统编写的程序应该在任何其他POSIX操作系统上编译和执行。POSIX不限于UNIX。许多其他操作系统,如DECOpenVMS,支持POSIX标准,特别是IEEEStd.1003.1-1990或POSIX。1.位置。1为操作系统的服务程序(如读取和写入文件)提供源代码级别C语言应用程序编程接口。gcc的参数-o指定生成可执行文件名c-reason的编译过程。c文件-˃预编译-˃编译-˃链接-˃可执行文件1。预编译(-E)1。

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原因的编译过程
system 系统调用、gcc编译过程第1张
.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查看详细参数

免责声明:文章转载自《system 系统调用、gcc编译过程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇前端工程师必备实用网站Go Mysql Driver 集成 Seata-Golang 解决分布式事务问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

PHP-Windows下搭建PHP-MSF环境【原创】

环境:Windows7 64位php-7.0.19php-swoole-1.9.15php-yac-2.0.2php-redis-3.1.2php-mongodb-1.2.10 遇坑: Cygwin: 不能默认使用 Windows 自带的 mingw git,否则报"fatal: Unable to create temporary file: Resul...

LUA-点号和冒号

由于LUA中是模拟类,没有class, 所以这里是使用.号来访问实例的成员 re.SetActive(re, re.activeSelf == false); 而冒号:  则是种语法糖,省略了上面代码中的第一个参数 re:SetActive(re.activeSelf == false); 也就是说:lua中对象.方法,只能找到方法,对象只能是类型,即使传...

Erlide 的安装使用

erlang 开发平台很少,做JAVA开发的人做erlang开发,肯定会怀念eclipse中的快捷键操作,配置调试,语法高亮等。Erlide则是这么一款基于eclipse 的erlang开发插件,目前的版本是0.13.9 安装步骤如下: 1.安装erlang开发环境(版本至少为R13B-5) 2.安装eclipse 3.eclipse-->help-...

典型用户和场景代码的实现

<需求分析> 老陈希望通过一款软件来储存自己出的题,然后让孩子自己去做并给出评价, 1,用户可以输入题。 2,可以储存用户输入的题。 3,可以通过用户输入的题进行出题。 4,可以做出评价。 <设计思路> 1,创建windows窗体,设计窗体,并根据窗体进行编码。 2,首先创建储存文件夹。 3,写一个储存的方法。 4,然后是读出用户所...

g++ 生成C++ .so库文件,并调用示例

Tags: g++ C++ so library 在Linux系统下用g++命令编译C++程序.也可以生成so,a链接库 示例一 编译时链接so库 Test.h 文件内容 Main.cpp文件内容 命令执行过程 //生成so文件 g++ -shared -fPIC -o libTestLib.so Test.h //编译Ma...

AS86 汇编器

内核编程语言和环境 语言编译过程就是把人类理解的高级语言转换成计算机硬件能理解和执行的二进制机器指令的过程。这种转换过程通常会产生一些效率不是很高的代码。所以一些对运行效率要求高或者性能影响较大的部分代码就会直接使用汇编语言来编写。或者对高级语言编译产生的汇编程序在进行人工修改或优化。 AS86汇编器 Linux0.1x系统中使用了两种汇编器,一种是能产...