system 系统调用gcc编译过程
Posted 613
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 并不局限于 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); }
汇编语言简介
汇编语言(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编译过程的主要内容,如果未能解决你的问题,请参考以下文章