c的编译链接与执行

一步到位

使用gcc hello.c可以将我们的源代码翻译成a.out这个可执行文件
如果要指定可执行文件的名字,如下:
gcc hello.c -o myhello
或者gcc hello.c -o hello.out
-o指定的文件名可以有后缀也可没有
如果没有就生成out.a 这个可执行文件

我们具体的说,gcc hello.c -o myhello
上面这个指令,至少包含了四步
预处理,编译,汇编和连接

各个流程

预处理

就是处理#define,#if同时还有把#include包含的文件插入到该指令的位置
我们一般使用gcc -E hello.c -o hello.i
预处理生成的文件的后缀名一般是.i
因为#include包含的文件插入到该指令的位置,所以.i文件一般比较大

编译

编译就是词法分析语法分析等等
后缀名一般是.s
命令如下:
gcc -S hello.c -o hello.s
或者
gcc -S hello.i
gcc -S hello.c
这样生成的文件默认名是hello.s

汇编

汇编就是将汇编代码转化成机器指令(目标文件)
汇编生成的文件后缀名一般是.o
命令如下:
gcc -c hello.s -o hello.o
或者
gcc -c hello.c
上面两个命令作用一样

链接

gcc hello.o -o hello.out

额外知识

在c.cpp中定义一个
int k=10;
我想在b.cpp中引用等于10的这个k就得在b.cpp中写
extern int k;
此时打印出k,就是10

参考资料

http://www.cnblogs.com/52php/p/5681711.html
http://blog.csdn.net/surgewong/article/details/39236707

相关推荐

  1. c编译执行

    2023-12-07 12:32:02       54 阅读
  2. C语言编译

    2023-12-07 12:32:02       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-07 12:32:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-07 12:32:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-07 12:32:02       82 阅读
  4. Python语言-面向对象

    2023-12-07 12:32:02       91 阅读

热门阅读

  1. 熟悉ElasticSearch 集群中搜索数据的过程吗?

    2023-12-07 12:32:02       57 阅读
  2. EEMD算法的Python实现

    2023-12-07 12:32:02       63 阅读
  3. C++:每日选择题--Day3

    2023-12-07 12:32:02       59 阅读
  4. postgres 登录及常用命令

    2023-12-07 12:32:02       65 阅读
  5. Linux 基础知识整理(四)

    2023-12-07 12:32:02       41 阅读
  6. Linux下的查看文件的命令

    2023-12-07 12:32:02       49 阅读
  7. c语言上机小练(有点难)

    2023-12-07 12:32:02       56 阅读
  8. python的几种解释器

    2023-12-07 12:32:02       52 阅读